diff --git a/.github/workflows/build-typescript-release.reusable.yaml b/.github/workflows/build-typescript-release.reusable.yaml index 90eaa584a..aea31fcaf 100644 --- a/.github/workflows/build-typescript-release.reusable.yaml +++ b/.github/workflows/build-typescript-release.reusable.yaml @@ -82,7 +82,7 @@ jobs: # NOTE: we can't use mise here because it doesn't support Windows - uses: pnpm/action-setup@v4 with: - version: 9.0.6 + version: 9.12.0 run_install: false - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/primary.yml b/.github/workflows/primary.yml index c068c802d..0fbacdc6c 100644 --- a/.github/workflows/primary.yml +++ b/.github/workflows/primary.yml @@ -34,7 +34,7 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: - version: 9.0.6 + version: 9.12.0 run_install: false - uses: actions/setup-node@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c87824aa0..b4dd1975f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -96,7 +96,7 @@ jobs: - name: setup pnpm uses: pnpm/action-setup@v4 with: - version: 9.0.6 + version: 9.12.0 package_json_file: engine/language_client_typescript/package.json run_install: false diff --git a/engine/baml-lib/baml-types/src/generator.rs b/engine/baml-lib/baml-types/src/generator.rs index c6927c02d..cc869a79b 100644 --- a/engine/baml-lib/baml-types/src/generator.rs +++ b/engine/baml-lib/baml-types/src/generator.rs @@ -20,6 +20,9 @@ pub enum GeneratorOutputType { #[strum(serialize = "typescript")] Typescript, + #[strum(serialize = "typescript/react")] + TypescriptReact, + #[strum(serialize = "ruby/sorbet")] RubySorbet, } @@ -38,6 +41,7 @@ impl GeneratorOutputType { // DO NOT CHANGE THIS DEFAULT EVER OR YOU WILL BREAK EXISTING USERS Self::PythonPydantic => GeneratorDefaultClientMode::Async, Self::Typescript => GeneratorDefaultClientMode::Async, + Self::TypescriptReact => GeneratorDefaultClientMode::Async, Self::RubySorbet => GeneratorDefaultClientMode::Sync, } } @@ -48,6 +52,7 @@ impl GeneratorOutputType { Self::OpenApi => GeneratorDefaultClientMode::Sync, Self::PythonPydantic => GeneratorDefaultClientMode::Sync, Self::Typescript => GeneratorDefaultClientMode::Async, + Self::TypescriptReact => GeneratorDefaultClientMode::Async, Self::RubySorbet => GeneratorDefaultClientMode::Sync, } } @@ -56,7 +61,6 @@ impl GeneratorOutputType { impl clap::ValueEnum for GeneratorOutputType { fn value_variants<'a>() -> &'a [Self] { use strum::VariantArray; - Self::VARIANTS } diff --git a/engine/baml-runtime/src/cli/generate.rs b/engine/baml-runtime/src/cli/generate.rs index 4719a3422..b19e8ba7d 100644 --- a/engine/baml-runtime/src/cli/generate.rs +++ b/engine/baml-runtime/src/cli/generate.rs @@ -61,6 +61,9 @@ impl GenerateArgs { // this has no meaning GeneratorDefaultClientMode::Sync } + internal_baml_core::configuration::GeneratorOutputType::TypescriptReact => { + GeneratorDefaultClientMode::Async + } }; // Normally `baml_client` is added via the generator, but since we're not running the generator, we need to add it manually. let output_dir_relative_to_baml_src = PathBuf::from(".."); @@ -77,6 +80,7 @@ impl GenerateArgs { default_client_mode, // TODO: this should be set if user is asking for openapi vec![], + None, ) .context("Failed while resolving .baml paths in baml_src/")?, ) diff --git a/engine/baml-runtime/src/cli/init.rs b/engine/baml-runtime/src/cli/init.rs index aaad095da..e71769e99 100644 --- a/engine/baml-runtime/src/cli/init.rs +++ b/engine/baml-runtime/src/cli/init.rs @@ -91,6 +91,7 @@ impl InitArgs { Some(s) => format!("{} clients via OpenAPI", s), None => "REST clients".to_string(), }, + GeneratorOutputType::TypescriptReact => "TypeScript React clients".to_string(), } ); log::info!( @@ -100,6 +101,7 @@ impl InitArgs { GeneratorOutputType::Typescript => "typescript", GeneratorOutputType::RubySorbet => "ruby", GeneratorOutputType::OpenApi => "openapi", + GeneratorOutputType::TypescriptReact => "typescript-react", } ); @@ -114,7 +116,7 @@ fn generate_main_baml_content( ) -> String { let default_client_mode = match output_type { GeneratorOutputType::OpenApi | GeneratorOutputType::RubySorbet => "".to_string(), - GeneratorOutputType::PythonPydantic | GeneratorOutputType::Typescript => format!( + GeneratorOutputType::PythonPydantic | GeneratorOutputType::Typescript | GeneratorOutputType::TypescriptReact => format!( r#" // Valid values: "sync", "async" // This controls what `b.FunctionName()` will be (sync or async). diff --git a/engine/baml-runtime/src/cli/serve/mod.rs b/engine/baml-runtime/src/cli/serve/mod.rs index 7c4a6e0d0..1be8853ef 100644 --- a/engine/baml-runtime/src/cli/serve/mod.rs +++ b/engine/baml-runtime/src/cli/serve/mod.rs @@ -23,7 +23,7 @@ use axum_extra::{ headers::{self, authorization::Basic, Authorization, Header}, TypedHeader, }; -use baml_types::{BamlValue, GeneratorDefaultClientMode}; +use baml_types::{BamlValue, GeneratorDefaultClientMode, GeneratorOutputType}; use core::pin::Pin; use futures::Stream; use serde::{Deserialize, Serialize}; @@ -67,7 +67,7 @@ impl ServeArgs { if !self.preview { log::warn!( r#"BAML-over-HTTP API is a preview feature. - + Please run with --preview, like so: {} serve --preview @@ -623,6 +623,7 @@ Tip: test that the server is up using `curl http://localhost:{}/_debug/ping` true, GeneratorDefaultClientMode::Sync, Vec::new(), + None, ) .map_err(|_| BamlError::InternalError { message: "Failed to make placeholder generator".to_string(), diff --git a/engine/baml-runtime/src/lib.rs b/engine/baml-runtime/src/lib.rs index 3ffc6eb8e..9d381ff27 100644 --- a/engine/baml-runtime/src/lib.rs +++ b/engine/baml-runtime/src/lib.rs @@ -452,6 +452,7 @@ impl BamlRuntime { no_version_check, generator.default_client_mode(), generator.on_generate.clone(), + Some(generator.output_type), )?, )) }) diff --git a/engine/baml-schema-wasm/web/package.json b/engine/baml-schema-wasm/web/package.json index 243518555..a46c5b843 100644 --- a/engine/baml-schema-wasm/web/package.json +++ b/engine/baml-schema-wasm/web/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "description": "The WASM package for baml-fmt", "main": "./dist/src/baml_schema_build.js", + "packageManager": "pnpm@9.12.0", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, diff --git a/engine/language_client_codegen/baml_src/baml_client/__init__.py b/engine/language_client_codegen/baml_src/baml_client/__init__.py new file mode 100644 index 000000000..bca77fa35 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/__init__.py @@ -0,0 +1,32 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +from . import types +from . import tracing +from . import partial_types +from .globals import reset_baml_env_vars + + +from .async_client import b + + + +__all__ = [ + "b", + "partial_types", + "tracing", + "types", + "reset_baml_env_vars", +] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/async_client.py b/engine/language_client_codegen/baml_src/baml_client/async_client.py new file mode 100644 index 000000000..bbc3706bf --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/async_client.py @@ -0,0 +1,67 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +from typing import Any, Dict, List, Optional, TypeVar, Union, TypedDict, Type, Literal, cast +from typing_extensions import NotRequired +import pprint + +import baml_py +from pydantic import BaseModel, ValidationError, create_model + +from . import partial_types, types +from .types import Checked, Check +from .type_builder import TypeBuilder +from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME + + +OutputType = TypeVar('OutputType') + + +# Define the TypedDict with optional parameters having default values +class BamlCallOptions(TypedDict, total=False): + tb: NotRequired[TypeBuilder] + client_registry: NotRequired[baml_py.baml_py.ClientRegistry] + +class BamlAsyncClient: + __runtime: baml_py.BamlRuntime + __ctx_manager: baml_py.BamlCtxManager + __stream_client: "BamlStreamClient" + + def __init__(self, runtime: baml_py.BamlRuntime, ctx_manager: baml_py.BamlCtxManager): + self.__runtime = runtime + self.__ctx_manager = ctx_manager + self.__stream_client = BamlStreamClient(self.__runtime, self.__ctx_manager) + + @property + def stream(self): + return self.__stream_client + + + + + +class BamlStreamClient: + __runtime: baml_py.BamlRuntime + __ctx_manager: baml_py.BamlCtxManager + + def __init__(self, runtime: baml_py.BamlRuntime, ctx_manager: baml_py.BamlCtxManager): + self.__runtime = runtime + self.__ctx_manager = ctx_manager + + + +b = BamlAsyncClient(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) + +__all__ = ["b"] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/globals.py b/engine/language_client_codegen/baml_src/baml_client/globals.py new file mode 100644 index 000000000..8cc8cb652 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/globals.py @@ -0,0 +1,41 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +import os + +from baml_py import BamlCtxManager, BamlRuntime +from baml_py.baml_py import BamlError +from .inlinedbaml import get_baml_files +from typing import Dict + +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME = BamlRuntime.from_files( + "baml_src", + get_baml_files(), + os.environ.copy() +) +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX = BamlCtxManager(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME) + +def reset_baml_env_vars(env_vars: Dict[str, str]): + if DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.allow_reset(): + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME.reset( + "baml_src", + get_baml_files(), + env_vars + ) + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.reset() + else: + raise BamlError("Cannot reset BAML environment variables while there are active BAML contexts.") + +__all__ = [] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/inlinedbaml.py b/engine/language_client_codegen/baml_src/baml_client/inlinedbaml.py new file mode 100644 index 000000000..552f162cf --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/inlinedbaml.py @@ -0,0 +1,22 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off + +file_map = { + +} + +def get_baml_files(): + return file_map \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/partial_types.py b/engine/language_client_codegen/baml_src/baml_client/partial_types.py new file mode 100644 index 000000000..f4ad35e68 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/partial_types.py @@ -0,0 +1,41 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +import baml_py +from enum import Enum +from pydantic import BaseModel, ConfigDict +from typing import Dict, Generic, List, Optional, TypeVar, Union, Literal + +from . import types +from .types import Checked, Check + +############################################################################### +# +# These types are used for streaming, for when an instance of a type +# is still being built up and any of its fields is not yet fully available. +# +############################################################################### + +T = TypeVar('T') +class StreamState(BaseModel, Generic[T]): + value: T + state: Literal["Pending", "Incomplete", "Complete"] + + +class Foo(BaseModel): + s: Optional[str] = None + +class Greg(BaseModel): + inner: StreamState[Checked[Optional["Foo"],Literal["foo"]]] diff --git a/engine/language_client_codegen/baml_src/baml_client/sync_client.py b/engine/language_client_codegen/baml_src/baml_client/sync_client.py new file mode 100644 index 000000000..57e76f696 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/sync_client.py @@ -0,0 +1,65 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +from typing import Any, Dict, List, Optional, TypeVar, Union, TypedDict, Type, Literal, cast +from typing_extensions import NotRequired +import pprint + +import baml_py +from pydantic import BaseModel, ValidationError, create_model + +from . import partial_types, types +from .types import Checked, Check +from .type_builder import TypeBuilder +from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME + +OutputType = TypeVar('OutputType') + +# Define the TypedDict with optional parameters having default values +class BamlCallOptions(TypedDict, total=False): + tb: NotRequired[TypeBuilder] + client_registry: NotRequired[baml_py.baml_py.ClientRegistry] + +class BamlSyncClient: + __runtime: baml_py.BamlRuntime + __ctx_manager: baml_py.BamlCtxManager + __stream_client: "BamlStreamClient" + + def __init__(self, runtime: baml_py.BamlRuntime, ctx_manager: baml_py.BamlCtxManager): + self.__runtime = runtime + self.__ctx_manager = ctx_manager + self.__stream_client = BamlStreamClient(self.__runtime, self.__ctx_manager) + + @property + def stream(self): + return self.__stream_client + + + + + +class BamlStreamClient: + __runtime: baml_py.BamlRuntime + __ctx_manager: baml_py.BamlCtxManager + + def __init__(self, runtime: baml_py.BamlRuntime, ctx_manager: baml_py.BamlCtxManager): + self.__runtime = runtime + self.__ctx_manager = ctx_manager + + + +b = BamlSyncClient(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) + +__all__ = ["b"] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/tracing.py b/engine/language_client_codegen/baml_src/baml_client/tracing.py new file mode 100644 index 000000000..7c2bff4d4 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/tracing.py @@ -0,0 +1,25 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +from .globals import DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX + +trace = DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.trace_fn +set_tags = DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.upsert_tags +def flush(): + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.flush() +on_log_event = DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.on_log_event + + +__all__ = ['trace', 'set_tags', "flush", "on_log_event"] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/type_builder.py b/engine/language_client_codegen/baml_src/baml_client/type_builder.py new file mode 100644 index 000000000..711e5367c --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/type_builder.py @@ -0,0 +1,36 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +import typing +from baml_py.baml_py import FieldType, EnumValueBuilder, EnumBuilder, ClassBuilder +from baml_py.type_builder import TypeBuilder as _TypeBuilder, ClassPropertyBuilder + +class TypeBuilder(_TypeBuilder): + def __init__(self): + super().__init__(classes=set( + ["Foo","Greg",] + ), enums=set( + [] + )) + + + + + + + + + +__all__ = ["TypeBuilder"] \ No newline at end of file diff --git a/engine/language_client_codegen/baml_src/baml_client/types.py b/engine/language_client_codegen/baml_src/baml_client/types.py new file mode 100644 index 000000000..3c9e2cf82 --- /dev/null +++ b/engine/language_client_codegen/baml_src/baml_client/types.py @@ -0,0 +1,46 @@ +############################################################################### +# +# Welcome to Baml! To use this generated code, please run the following: +# +# $ pip install baml +# +############################################################################### + +# This file was generated by BAML: please do not edit it. Instead, edit the +# BAML files and re-generate this code. +# +# ruff: noqa: E501,F401 +# flake8: noqa: E501,F401 +# pylint: disable=unused-import,line-too-long +# fmt: off +import baml_py +from enum import Enum +from pydantic import BaseModel, ConfigDict +from typing import Dict, Generic, List, Literal, Optional, TypeVar, Union, TypeAlias + + +T = TypeVar('T') +CheckName = TypeVar('CheckName', bound=str) + +class Check(BaseModel): + name: str + expression: str + status: str + +class Checked(BaseModel, Generic[T,CheckName]): + value: T + checks: Dict[CheckName, Check] + +def get_checks(checks: Dict[CheckName, Check]) -> List[Check]: + return list(checks.values()) + +def all_succeeded(checks: Dict[CheckName, Check]) -> bool: + return all(check.status == "succeeded" for check in get_checks(checks)) + + + +class Foo(BaseModel): + s: str + +class Greg(BaseModel): + inner: Checked[Optional["Foo"],Literal["foo"]] diff --git a/engine/language_client_codegen/src/lib.rs b/engine/language_client_codegen/src/lib.rs index a67167550..871e060c7 100644 --- a/engine/language_client_codegen/src/lib.rs +++ b/engine/language_client_codegen/src/lib.rs @@ -33,6 +33,9 @@ pub struct GeneratorArgs { // Default call mode for functions default_client_mode: GeneratorDefaultClientMode, on_generate: Vec, + + // The type of client to generate + client_type: Option, } fn relative_path_to_baml_src(path: &Path, baml_src: &Path) -> Result { @@ -54,6 +57,7 @@ impl GeneratorArgs { no_version_check: bool, default_client_mode: GeneratorDefaultClientMode, on_generate: Vec, + client_type: Option, ) -> Result { let baml_src = baml_src_dir.into(); let input_file_map: BTreeMap = input_files @@ -70,6 +74,7 @@ impl GeneratorArgs { no_version_check, default_client_mode, on_generate, + client_type, }) } @@ -185,6 +190,7 @@ impl GenerateClient for GeneratorOutputType { GeneratorOutputType::PythonPydantic => python::generate(ir, gen), GeneratorOutputType::RubySorbet => ruby::generate(ir, gen), GeneratorOutputType::Typescript => typescript::generate(ir, gen), + GeneratorOutputType::TypescriptReact => typescript::generate(ir, gen), }?; #[cfg(not(target_arch = "wasm32"))] diff --git a/engine/language_client_codegen/src/python/mod.rs b/engine/language_client_codegen/src/python/mod.rs index 547aead87..0780120fd 100644 --- a/engine/language_client_codegen/src/python/mod.rs +++ b/engine/language_client_codegen/src/python/mod.rs @@ -7,7 +7,7 @@ use anyhow::Result; use generate_types::{to_python_literal, type_name_for_checks}; use indexmap::IndexMap; use internal_baml_core::{ - configuration::GeneratorDefaultClientMode, + configuration::{GeneratorDefaultClientMode, GeneratorOutputType}, ir::{repr::IntermediateRepr, FieldType, IRHelper}, }; @@ -341,7 +341,7 @@ class Foo { } fn mk_gen() -> GeneratorArgs { - GeneratorArgs::new("baml_client", "baml_src", vec![], "no_version".to_string(), true, GeneratorDefaultClientMode::Async, Vec::new()).unwrap() + GeneratorArgs::new("baml_client", "baml_src", vec![], "no_version".to_string(), true, GeneratorDefaultClientMode::Async, Vec::new(), Some(GeneratorOutputType::PythonPydantic)).unwrap() } #[test] diff --git a/engine/language_client_codegen/src/typescript/mod.rs b/engine/language_client_codegen/src/typescript/mod.rs index 867d293c2..526007b35 100644 --- a/engine/language_client_codegen/src/typescript/mod.rs +++ b/engine/language_client_codegen/src/typescript/mod.rs @@ -1,20 +1,82 @@ mod generate_types; mod typescript_language_features; -use std::path::PathBuf; +use std::{collections::HashMap, path::PathBuf}; use anyhow::Result; use baml_types::LiteralValue; use generate_types::{render_docstring, type_name_for_checks}; use indexmap::IndexMap; use internal_baml_core::{ - configuration::GeneratorDefaultClientMode, + configuration::{GeneratorDefaultClientMode, GeneratorOutputType}, ir::{repr::IntermediateRepr, FieldType, IRHelper}, }; use self::typescript_language_features::{ToTypescript, TypescriptLanguageFeatures}; use crate::{dir_writer::FileCollector, field_type_attributes}; +mod framework { + use internal_baml_core::configuration::GeneratorOutputType; + + #[derive(Debug, Clone, Copy)] + pub enum TypescriptFramework { + None, + React + } + + impl TypescriptFramework { + pub fn from_generator_type(output_type: Option) -> Self { + match output_type { + Some(GeneratorOutputType::TypescriptReact) => Self::React, + Some(GeneratorOutputType::Typescript) | None => Self::None, + Some(_) => panic!("Invalid generator type for TypeScript framework"), + } + } + } +} + +use framework::TypescriptFramework; + +mod filters { + pub fn length(v: &Vec) -> Result { + Ok(v.len()) + } +} + +#[derive(askama::Template)] +#[template(path = "react/server.ts.j2", escape = "none")] +struct ReactServerActions { + funcs: Vec, + types: Vec, +} + +#[derive(askama::Template)] +#[template(path = "react/server_streaming.ts.j2", escape = "none")] +struct ReactServerStreaming { + funcs: Vec, + types: Vec, +} + +#[derive(askama::Template)] +#[template(path = "react/server_streaming_types.ts.j2", escape = "none")] +struct ReactServerStreamingTypes { + funcs: Vec, + types: Vec, + partial_return_types: HashMap, +} + +#[derive(askama::Template)] +#[template(path = "react/client.tsx.j2", escape = "none")] +struct ReactClientHooks { + funcs: Vec, + types: Vec, +} + +#[derive(askama::Template)] +#[template(path = "react/types.ts.j2", escape = "none")] +struct ReactTypes {} + + #[derive(askama::Template)] #[template(path = "async_client.ts.j2", escape = "none")] struct AsyncTypescriptClient { @@ -32,6 +94,7 @@ struct SyncTypescriptClient { struct TypescriptClient { funcs: Vec, types: Vec, + partial_return_types: HashMap, } impl From for AsyncTypescriptClient { @@ -52,6 +115,43 @@ impl From for SyncTypescriptClient { } } +impl From for ReactServerActions { + fn from(value: TypescriptClient) -> Self { + Self { + funcs: value.funcs, + types: value.types, + } + } +} + +impl From for ReactServerStreaming { + fn from(value: TypescriptClient) -> Self { + Self { + funcs: value.funcs, + types: value.types, + } + } +} + +impl From for ReactServerStreamingTypes { + fn from(value: TypescriptClient) -> Self { + Self { + funcs: value.funcs, + types: value.types, + partial_return_types: value.partial_return_types, + } + } +} + +impl From for ReactClientHooks { + fn from(value: TypescriptClient) -> Self { + Self { + funcs: value.funcs, + types: value.types, + } + } +} + #[derive(Debug)] struct TypescriptFunction { name: String, @@ -82,11 +182,15 @@ struct InlinedBaml { #[template(path = "tracing.ts.j2", escape = "none")] struct TypescriptTracing {} + pub(crate) fn generate( ir: &IntermediateRepr, generator: &crate::GeneratorArgs, ) -> Result> { + let framework = TypescriptFramework::from_generator_type(generator.client_type); let mut collector = FileCollector::::new(); + + // Add base TypeScript files collector.add_template::("types.ts", (ir, generator))?; collector.add_template::( "partial_types.ts", @@ -100,6 +204,18 @@ pub(crate) fn generate( collector.add_template::("index.ts", (ir, generator))?; collector.add_template::("inlinedbaml.ts", (ir, generator))?; + // Add framework-specific files + match framework { + TypescriptFramework::React => { + collector.add_template::("react/types.ts", (ir, generator))?; + collector.add_template::("react/server.ts", (ir, generator))?; + collector.add_template::("react/server_streaming.ts", (ir, generator))?; + collector.add_template::("react/server_streaming_types.ts", (ir, generator))?; + collector.add_template::("react/client.tsx", (ir, generator))?; + } + TypescriptFramework::None => {} + } + collector.commit(&generator.output_dir()) } @@ -125,7 +241,7 @@ impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for TypescriptCli type Error = anyhow::Error; fn try_from((ir, _): (&IntermediateRepr, &crate::GeneratorArgs)) -> Result { - let functions = ir + let functions: Vec = ir .walk_functions() .map(|f| { let configs = f.walk_impls(); @@ -158,13 +274,19 @@ impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for TypescriptCli .flatten() .collect(); + // Collect all types including recursive aliases let types = ir .walk_classes() .map(|c| c.name().to_string()) .chain(ir.walk_enums().map(|e| e.name().to_string())) + .chain(ir.walk_alias_cycles().map(|a| a.item.0.clone())) .collect(); + + let partial_return_types = functions.iter().map(|f| (f.name.clone(), f.partial_return_type.clone())).collect(); + Ok(TypescriptClient { funcs: functions, + partial_return_types, types, }) } @@ -206,6 +328,50 @@ impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for TypescriptIni } } +impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for ReactServerActions { + type Error = anyhow::Error; + + fn try_from(params: (&'_ IntermediateRepr, &'_ crate::GeneratorArgs)) -> Result { + let typscript_client = TypescriptClient::try_from(params)?; + Ok(typscript_client.into()) + } +} + +impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for ReactServerStreaming { + type Error = anyhow::Error; + + fn try_from(params: (&'_ IntermediateRepr, &'_ crate::GeneratorArgs)) -> Result { + let typscript_client = TypescriptClient::try_from(params)?; + Ok(typscript_client.into()) + } +} + +impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for ReactServerStreamingTypes { + type Error = anyhow::Error; + + fn try_from(params: (&'_ IntermediateRepr, &'_ crate::GeneratorArgs)) -> Result { + let typscript_client = TypescriptClient::try_from(params)?; + Ok(typscript_client.into()) + } +} + +impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for ReactClientHooks { + type Error = anyhow::Error; + + fn try_from(params: (&'_ IntermediateRepr, &'_ crate::GeneratorArgs)) -> Result { + let typscript_client = TypescriptClient::try_from(params)?; + Ok(typscript_client.into()) + } +} + +impl TryFrom<(&'_ IntermediateRepr, &'_ crate::GeneratorArgs)> for ReactTypes { + type Error = anyhow::Error; + + fn try_from(_: (&IntermediateRepr, &crate::GeneratorArgs)) -> Result { + Ok(ReactTypes {}) + } +} + trait ToTypeReferenceInClientDefinition { fn to_type_ref(&self, ir: &IntermediateRepr, use_module_prefix: bool) -> String; /// The string representation of a field type, and whether the field is optional. @@ -226,7 +392,7 @@ impl ToTypeReferenceInClientDefinition for FieldType { if needed { (format!("{module_prefix}{name}"), false) } else { - (format!("{module_prefix}{name} | null"), true) + (format!("({module_prefix}{name} | null)"), true) } } FieldType::RecursiveTypeAlias(name) => (name.to_owned(), !needed), diff --git a/engine/language_client_codegen/src/typescript/templates/async_client.ts.j2 b/engine/language_client_codegen/src/typescript/templates/async_client.ts.j2 index a8d19eb4f..4445b96c2 100644 --- a/engine/language_client_codegen/src/typescript/templates/async_client.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/async_client.ts.j2 @@ -1,12 +1,17 @@ import { BamlRuntime, FunctionResult, BamlCtxManager, BamlStream, Image, ClientRegistry, BamlValidationError, createBamlValidationError } from "@boundaryml/baml" -import { Checked, Check } from "./types" -import "./partial_types" -import { +import type { Checked, Check, RecursivePartialNull as MovedRecursivePartialNull } from "./types" +import type { partial_types } from "./partial_types"; +import type { {%- for t in types %}{{ t }}{% if !loop.last %}, {% endif %}{% endfor -%} } from "./types" import TypeBuilder from "./type_builder" import { DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME } from "./globals" +/** + * @deprecated Use RecursivePartialNull from 'baml_client/types' instead. + */ +export type RecursivePartialNull = MovedRecursivePartialNull + export class BamlAsyncClient { private runtime: BamlRuntime private ctx_manager: BamlCtxManager diff --git a/engine/language_client_codegen/src/typescript/templates/index.ts.j2 b/engine/language_client_codegen/src/typescript/templates/index.ts.j2 index d07181474..d481afcf7 100644 --- a/engine/language_client_codegen/src/typescript/templates/index.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/index.ts.j2 @@ -4,6 +4,7 @@ export { b } from "./async_client" export { b } from "./sync_client" {% endif %} export * from "./types" +export type { partial_types } from "./partial_types" export * from "./tracing" export { resetBamlEnvVars } from "./globals" export { BamlValidationError } from "@boundaryml/baml" diff --git a/engine/language_client_codegen/src/typescript/templates/partial_types.ts.j2 b/engine/language_client_codegen/src/typescript/templates/partial_types.ts.j2 index c79b876c3..89d3aa969 100644 --- a/engine/language_client_codegen/src/typescript/templates/partial_types.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/partial_types.ts.j2 @@ -14,22 +14,24 @@ export interface StreamState { state: "Pending" | "Incomplete" | "Complete" } -{# Partial classes (used for streaming) -#} -{% for cls in partial_classes %} -{%- if let Some(docstring) = cls.docstring %} -{{docstring}} -{%- endif %} -export interface {{cls.name}} { - - {%- for (name, optional, type, m_docstring) in cls.fields %} - {%- if let Some(docstring) = m_docstring %} - {{ docstring }} +export namespace partial_types { + {# Partial classes (used for streaming) -#} + {% for cls in partial_classes %} + {%- if let Some(docstring) = cls.docstring %} + {{docstring}} {%- endif %} - {{name}}{% if optional %}?{% endif%}: {{type}} - {%- endfor %} + export interface {{cls.name}} { - {%- if cls.dynamic %} - [key: string]: any; - {%- endif %} -} -{% endfor %} + {%- for (name, optional, type, m_docstring) in cls.fields %} + {%- if let Some(docstring) = m_docstring %} + {{ docstring }} + {%- endif %} + {{name}}{% if optional %}?{% endif%}: {{type}} + {%- endfor %} + + {%- if cls.dynamic %} + [key: string]: any; + {%- endif %} + } + {% endfor %} +} \ No newline at end of file diff --git a/engine/language_client_codegen/src/typescript/templates/react/client.tsx.j2 b/engine/language_client_codegen/src/typescript/templates/react/client.tsx.j2 new file mode 100644 index 000000000..bb495fc4a --- /dev/null +++ b/engine/language_client_codegen/src/typescript/templates/react/client.tsx.j2 @@ -0,0 +1,307 @@ +'use client' + +import { useCallback, useMemo, useReducer, useTransition } from 'react'; +import type { + StreamingProps, + NonStreamingProps, + StreamingHookResult, + NonStreamingHookResult, + HookProps, + PartialReturnType, + FinalReturnType, + ServerAction, + BamlStreamResponse, + ActionKey, +} from './types'; +import { BamlValidationError, BamlClientFinishReasonError } from "@boundaryml/baml/errors"; +import * as Actions from './server'; +import * as StreamingActions from './server_streaming' + +/** + * Type guard to check if the hook props are configured for streaming mode. + * + * @template TActionKey - The key of the Actions namespace. + * @param props - The hook props. + * @returns {boolean} True if the props indicate streaming mode. + */ +function isStreamingProps( + props: HookProps +): props is StreamingProps { + return props.stream === true; +} + +function isBamlError(error?: Error | BamlValidationError | BamlClientFinishReasonError): error is (BamlValidationError | BamlClientFinishReasonError) & { type: string } { + const errorType = (error as any)?.type; + return errorType === 'BamlValidationError' || errorType === 'BamlClientFinishReasonError'; +} + +interface HookState { + isSuccess: boolean; + error?: Error | BamlValidationError | BamlClientFinishReasonError; + data?: TFinal; + partialData?: TPartial; +} + +type HookStateAction = + | { type: 'START_REQUEST' } + | { type: 'SET_ERROR'; payload: Error | BamlValidationError | BamlClientFinishReasonError } + | { type: 'SET_PARTIAL'; payload: TPartial } + | { type: 'SET_FINAL'; payload: TFinal } + | { type: 'RESET' }; + +/** + * Reducer function to manage the hook state transitions. + * + * @template TPartial - The type of the partial (streaming) data. + * @template TFinal - The type of the final (non‑streaming) data. + * @param state - The current hook state. + * @param action - The action to apply. + * @returns The updated state. + */ +function hookReducer( + state: HookState, + action: HookStateAction +): HookState { + switch (action.type) { + case 'START_REQUEST': + return { + ...state, + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + }; + case 'SET_ERROR': + return { + ...state, + isSuccess: false, + error: action.payload, + data: undefined, + partialData: undefined, + }; + case 'SET_PARTIAL': + return { + ...state, + partialData: action.payload, + }; + case 'SET_FINAL': + return { + ...state, + isSuccess: true, + data: action.payload, + partialData: undefined, + }; + case 'RESET': + return { + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + }; + default: + return state; + } +} + +/** + * Base hook for executing BAML server actions, supporting both streaming and non‑streaming modes. + * + * This hook provides a unified interface for handling loading states, partial updates, errors, + * and final responses. It is designed to be used directly with any BAML server action. + * + * Features: + * - **Streaming Support:** Real‑time partial updates via `partialData`, progress indicators, and incremental UI updates. + * - **State Management:** Manages loading state (`isPending`), success/error flags, and final/partial results. + * - **Error Handling:** Supports type‑safe error handling for BamlValidationError, BamlClientFinishReasonError, and standard errors. + * + * @param Action - The server action to invoke. + * @param props - Configuration props for the hook. + * @returns An object with the current state and a `mutate` function to trigger the action. + * + * @example + * ```tsx + * const { data, error, isPending, mutate } = useBamlAction(StreamingActions.TestAws, { stream: true }); + * ``` + */ +export function useBamlAction( + action: ServerAction, + props: StreamingProps +): StreamingHookResult; + +export function useBamlAction( + action: ServerAction, + props?: NonStreamingProps +): NonStreamingHookResult; + +export function useBamlAction( + action: ServerAction, + props: HookProps = {} +): StreamingHookResult | NonStreamingHookResult { + const { onFinal, onError, onPartial } = props; + const isStreaming = isStreamingProps(props); + const [isPending, startTransition] = useTransition(); + + const [state, dispatch] = useReducer( + hookReducer, FinalReturnType>, + { + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + } + ); + + const mutate = useCallback( + async (...input: Parameters) => { + dispatch({ type: 'START_REQUEST' }); + try { + let response: Awaited>; + startTransition(async () => { + response = await action(...input); + if (isStreaming && response instanceof ReadableStream) { + const reader = response.getReader(); + const decoder = new TextDecoder(); + try { + while (true) { + const { value, done } = await reader.read(); + if (done) break; + if (value) { + const chunk = decoder.decode(value, { stream: true }).trim(); + try { + const parsed: BamlStreamResponse, FinalReturnType> = JSON.parse(chunk); + if (parsed.error) { + let error: Error | BamlValidationError | BamlClientFinishReasonError = new Error('Unknown error') + + if (isBamlError(parsed.error)) { + if (parsed.error?.type === 'BamlValidationError') { + error = new BamlValidationError( + parsed.error.prompt, + parsed.error.raw_output, + parsed.error.message, + ) + } else if (parsed.error.type === 'BamlClientFinishReasonError') { + error = new BamlClientFinishReasonError( + parsed.error.prompt, + parsed.error.raw_output, + parsed.error.message, + ) + } + } else { + error = new Error(parsed.error.message) + } + throw error; + } + if (parsed.partial !== undefined) { + dispatch({ type: 'SET_PARTIAL', payload: parsed.partial }); + onPartial?.(parsed.partial); + } + if (parsed.final !== undefined) { + dispatch({ type: 'SET_FINAL', payload: parsed.final }); + onFinal?.(parsed.final); + return; + } + } catch (err: unknown) { + dispatch({ type: "SET_ERROR", payload: err as Error | BamlValidationError | BamlClientFinishReasonError }); + onError?.(err as Error | BamlValidationError | BamlClientFinishReasonError); + break; + } + } + } + } finally { + reader.releaseLock(); + } + return; + } + // Non‑streaming case + dispatch({ type: 'SET_FINAL', payload: response }); + onFinal?.(response); + }); + return response; + } catch (error_: unknown) { + dispatch({ type: 'SET_ERROR', payload: error_ as Error | BamlValidationError | BamlClientFinishReasonError }); + onError?.(error_ as Error | BamlValidationError | BamlClientFinishReasonError); + throw error_; + } + }, + [action, isStreaming, onPartial, onFinal, onError] + ); + + const status = useMemo<"idle" | "pending" | "success" | "error">(() => { + if (isPending) return "pending"; + if (state.error) return "error"; + if (state.isSuccess) return "success"; + return "idle"; + }, [isPending, state.error, state.isSuccess]); + + const result = { + data: state.data, + error: state.error, + isError: !!state.error, + isSuccess: state.isSuccess, + isPending, + mutate, + status, + }; + + return { + ...result, + partialData: isStreaming ? state.partialData : undefined, + }; +} + +{%- for func in funcs %} +/** + * A specialized hook for the {{ func.name }} BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * {%- for (name, optional, type) in func.args %} + * - {{ name }}{% if optional %} (optional){% endif %}: {{ type }} + * {%- endfor %} + * + * **Return Type:** + * - **Non‑streaming:** {{ func.return_type }} + * - **Streaming Partial:** {{ func.partial_return_type }} + * - **Streaming Final:** {{ func.return_type }} + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = use{{ func.name }}(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = use{{ func.name }}({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function use{{ func.name }}( + props: StreamingProps<'{{ func.name }}'> +): StreamingHookResult<'{{ func.name }}'>; + +export function use{{ func.name }}( + props?: NonStreamingProps<'{{ func.name }}'> +): NonStreamingHookResult<'{{ func.name }}'>; + +export function use{{ func.name }}( + props: HookProps<'{{ func.name }}'> = {} +): StreamingHookResult<'{{ func.name }}'> | NonStreamingHookResult<'{{ func.name }}'> { + if (props.stream) { + return useBamlAction(StreamingActions.{{ func.name }}, props); + } else { + return useBamlAction(Actions.{{ func.name }}, props); + } +} +{%- endfor %} \ No newline at end of file diff --git a/engine/language_client_codegen/src/typescript/templates/react/server.ts.j2 b/engine/language_client_codegen/src/typescript/templates/react/server.ts.j2 new file mode 100644 index 000000000..f6434b98c --- /dev/null +++ b/engine/language_client_codegen/src/typescript/templates/react/server.ts.j2 @@ -0,0 +1,39 @@ +'use server' + +import { b } from '../index'; +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { {% for t in types %} {{ t }}{% if !loop.last %}, {% endif %}{% endfor %} } from "../types" + +import type * as types from "../types" + +/** + * Regular BAML server actions that return direct responses. + */ +{%- for func in funcs %} + +/** + * Executes the "{{ func.name }}" BAML action. + * + * This server action calls the underlying BAML function "{{ func.name }}" + * with the specified parameters. + * +{%- for (name, optional, type) in func.args %} + * @param { {{ type }} } {{ name }}{% if optional %} (optional){% endif %} - Input parameter. +{%- endfor %} + * + * @returns {Promise<{{ func.return_type }}>} A promise that resolves with the result of the action. + */ +export const {{ func.name }} = async ( + {%- for (name, optional, type) in func.args %} + {{ name }}{% if optional %}?{% endif %}: {{ type }}, + {%- endfor %} +): Promise<{{ func.return_type }}> => { + return b.{{ func.name }}( + {%- for (name, _, _) in func.args %} + {{ name }}, + {%- endfor %} + ); +}; +{%- endfor %} \ No newline at end of file diff --git a/engine/language_client_codegen/src/typescript/templates/react/server_streaming.ts.j2 b/engine/language_client_codegen/src/typescript/templates/react/server_streaming.ts.j2 new file mode 100644 index 000000000..aa0eea259 --- /dev/null +++ b/engine/language_client_codegen/src/typescript/templates/react/server_streaming.ts.j2 @@ -0,0 +1,40 @@ +'use server' + +import { b } from '../index'; +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { {% for t in types %} {{ t }}{% if !loop.last %}, {% endif %}{% endfor %} } from "../types" + +import type * as types from "../types" + +/** + * Streaming BAML server actions that return ReadableStreams. + */ +{%- for func in funcs %} + +/** + * Executes the streaming variant of the "{{ func.name }}" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * +{%- for (name, optional, type) in func.args %} + * @param { {{ type }} } {{ name }}{% if optional %} (optional){% endif %} - Input parameter. +{%- endfor %} + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const {{ func.name }} = async ( + {%- for (name, optional, type) in func.args %} + {{ name }}{% if optional %}?{% endif %}: {{ type }}, + {%- endfor %} +): Promise> => { + const stream = b.stream.{{ func.name }}( + {%- for (name, _, _) in func.args %} + {{ name }}, + {%- endfor %} + ); + return Promise.resolve(stream.toStreamable()); +}; +{%- endfor %} \ No newline at end of file diff --git a/engine/language_client_codegen/src/typescript/templates/react/server_streaming_types.ts.j2 b/engine/language_client_codegen/src/typescript/templates/react/server_streaming_types.ts.j2 new file mode 100644 index 000000000..1d24e6ec9 --- /dev/null +++ b/engine/language_client_codegen/src/typescript/templates/react/server_streaming_types.ts.j2 @@ -0,0 +1,13 @@ +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { {% for t in types %} {{ t }}{% if !loop.last %}, {% endif %}{% endfor %} } from "../types" + +import type * as types from "../types" +import type { partial_types }from "../partial_types"; + +export type StreamingServerTypes = { +{%- for (name, partial_return_type) in partial_return_types %} + {{ name }}: {{ partial_return_type }}, +{%- endfor %} +} diff --git a/engine/language_client_codegen/src/typescript/templates/react/types.ts.j2 b/engine/language_client_codegen/src/typescript/templates/react/types.ts.j2 new file mode 100644 index 000000000..0b9bb0a22 --- /dev/null +++ b/engine/language_client_codegen/src/typescript/templates/react/types.ts.j2 @@ -0,0 +1,192 @@ +import type { BamlClientFinishReasonError, BamlValidationError } from '@boundaryml/baml/errors'; +import type * as Actions from './server' +import type { StreamingServerTypes }from './server_streaming_types' +/** + * Type representing all action keys except 'stream' and 'stream_types' + */ +export type ActionKey = keyof typeof Actions + +/** + * Type representing a BAML stream response. + * + * @template PartialType The type of the partial response. + * @template FinalType The type of the final response. + */ +export type BamlStreamResponse = { + partial?: PartialType + final?: FinalType + error?: Error | BamlValidationError | BamlClientFinishReasonError +} + +/** + * A server action that returns either a ReadableStream of Uint8Array or a final output. + */ +export type ServerAction = ( + ...args: Input extends any[] ? Input : [Input] +) => Promise | ReadableStream + +/** + * Helper type to derive the final return type for an action. + * + * If the action is a key of the Actions namespace, its final type is + * derived from (typeof Actions)[TActionKey]. Otherwise, if it is a raw action, + * the return type is derived directly. + * + * @template TActionKey The Actions namespace key + */ +export type FinalReturnType = (typeof Actions)[TActionKey] extends (...args: any) => any + ? Awaited> + : never + +/** + * Helper type to derive the partial return type for an action. + * + * If the action is a key of the Actions namespace, its partial type is + * obtained from the corresponding mapping in StreamingServerTypes. + * Otherwise, it defaults to never. + * + * @template TActionKey The Actions namespace key + */ + export type PartialReturnType = StreamingServerTypes[TActionKey] + +/** + * Props for streaming mode. + * + * If TActionKey is a key of Actions then the partial and final types are looked up + * from StreamingServerTypes and ActionKey respectively. + * Otherwise, they are inferred directly from the provided function type. + * + * @template TActionKey The Actions namespace key + */ +export type StreamingProps< + TActionKey extends ActionKey = ActionKey +> = { + stream: true + onPartial?: ( + response?: PartialReturnType, + ) => void + onFinal?: ( + response?: FinalReturnType, + ) => void + onError?: (error: Error | BamlValidationError | BamlClientFinishReasonError) => void +} + +/** + * Props for non‑streaming mode. + * + * @template TActionKey The Actions namespace key + */ +export type NonStreamingProps< + TActionKey extends ActionKey = ActionKey +> = { + stream?: false + onPartial?: never + onFinal?: ( + response?: FinalReturnType, + ) => void + onError?: (error: Error | BamlValidationError | BamlClientFinishReasonError) => void +} + +/** + * Union type of all possible hook props. + * + * @template TActionKey The Actions namespace key + */ +export type HookProps< + TActionKey extends ActionKey = ActionKey +> = + | StreamingProps + | NonStreamingProps + +/** + * Base return type for all BAML hooks. + * + * The final data type is derived from the non‑streaming action. + * + * @template TActionKey Either a key of the Actions namespace or a raw action type. + */ +export type BaseHookResult = { + /** + * The complete, final result of the operation. + */ + data?: FinalReturnType + /** + * Error details if the operation failed. + */ + error?: Error | BamlValidationError | BamlClientFinishReasonError + /** + * True if the operation failed. + */ + isError: boolean + /** + * True while the operation is in progress. + */ + isPending: boolean + /** + * True if the operation completed successfully. + */ + isSuccess: boolean + /** + * The current phase of the operation. + */ + status: 'idle' | 'pending' | 'success' | 'error' +} + +/** + * Return type for streaming mode BAML hooks. + * + * @template TActionKey The Actions namespace key + */ +export type StreamingHookResult = + BaseHookResult & { + /** + * The most recent partial result from the stream. + */ + partialData?: PartialReturnType + /** + * Function to start the operation. + */ + mutate: (...input: Parameters<(typeof Actions)[TActionKey]>) => Promise> + } + +/** + * Return type for non‑streaming mode BAML hooks. + * + * @template TActionKey The Actions namespace key + */ +export type NonStreamingHookResult = + BaseHookResult & { + partialData?: never + mutate: ( + ...input: Parameters<(typeof Actions)[TActionKey]> + ) => Promise>> + } + +/** + * Conditional return type for BAML hooks based on the provided props. + * + * @template TActionKey The Actions namespace key + * @template Props The hook props. + */ +export type HookResult< + TActionKey extends ActionKey = ActionKey, + Props extends HookProps = HookProps, +> = Props extends { stream: true } ? StreamingHookResult : NonStreamingHookResult + +/** + * Helper type to extract the non‑null partial data type from a BAML hook result. + * + * @template TActionKey The Actions namespace key + */ +export type HookResultPartialData = NonNullable< + HookResult['partialData'] +> + +/** + * Helper type to extract the non‑null final data type from a BAML hook result. + * + * @template TActionKey The Actions namespace key + */ +export type HookResultData = NonNullable< + HookResult['data'] +> diff --git a/engine/language_client_codegen/src/typescript/templates/sync_client.ts.j2 b/engine/language_client_codegen/src/typescript/templates/sync_client.ts.j2 index 170a411ca..0bf270454 100644 --- a/engine/language_client_codegen/src/typescript/templates/sync_client.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/sync_client.ts.j2 @@ -1,11 +1,20 @@ import { BamlRuntime, FunctionResult, BamlCtxManager, BamlSyncStream, Image, ClientRegistry, createBamlValidationError, BamlValidationError } from "@boundaryml/baml" -import { Checked, Check } from "./types" -import { - {%- for t in types %}{{ t }}{% if !loop.last %}, {% endif %}{% endfor -%} +import type { Checked, Check, RecursivePartialNull as MovedRecursivePartialNull } from "./types" +import type { + {%- for t in types %}{{ t }}{% if !loop.last %}, {% endif %}{% endfor -%} } from "./types" import TypeBuilder from "./type_builder" import { DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME } from "./globals" +/** + * @deprecated Use RecursivePartialNull from 'baml_client/types' instead. + * Example: + * ```ts + * import { RecursivePartialNull } from './baml_client/types' + * ``` + */ +export type RecursivePartialNull = MovedRecursivePartialNull; + export class BamlSyncClient { private runtime: BamlRuntime private ctx_manager: BamlCtxManager @@ -19,7 +28,7 @@ export class BamlSyncClient { */ get stream() { throw new Error("stream is not available in BamlSyncClient. Use `import { b } from 'baml_client/async_client") - } + } {% for fn in funcs %} {{ fn.name }}( diff --git a/engine/language_client_codegen/src/typescript/templates/type_builder.ts.j2 b/engine/language_client_codegen/src/typescript/templates/type_builder.ts.j2 index c41456628..d559c2607 100644 --- a/engine/language_client_codegen/src/typescript/templates/type_builder.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/type_builder.ts.j2 @@ -1,5 +1,6 @@ -import { FieldType } from '@boundaryml/baml/native' -import { TypeBuilder as _TypeBuilder, EnumBuilder, ClassBuilder } from '@boundaryml/baml/type_builder' +import type { FieldType } from '@boundaryml/baml/native' +import { TypeBuilder as _TypeBuilder } from '@boundaryml/baml/type_builder' +import type { EnumBuilder, ClassBuilder } from '@boundaryml/baml/type_builder' export default class TypeBuilder { private tb: _TypeBuilder; @@ -36,7 +37,7 @@ export default class TypeBuilder { __tb() { return this.tb._tb(); } - + string(): FieldType { return this.tb.string() } diff --git a/engine/language_client_codegen/src/typescript/templates/types.ts.j2 b/engine/language_client_codegen/src/typescript/templates/types.ts.j2 index 308967604..fa1a035e7 100644 --- a/engine/language_client_codegen/src/typescript/templates/types.ts.j2 +++ b/engine/language_client_codegen/src/typescript/templates/types.ts.j2 @@ -1,5 +1,11 @@ import { Image } from "@boundaryml/baml" +export type RecursivePartialNull = T extends keyof typeof import("./partial_types") + ? typeof import("./partial_types")[T] + : T extends object + ? { [P in keyof T]?: RecursivePartialNull } + : T | null; + export interface Checked { value: T, checks: Record, @@ -55,5 +61,5 @@ export interface {{cls.name}} { {#- Type Aliases -#} {% for alias in structural_recursive_alias_cycles %} -type {{alias.name}} = {{alias.target}} +export type {{alias.name}} = {{alias.target}} {% endfor %} diff --git a/engine/language_client_codegen/src/version_check.rs b/engine/language_client_codegen/src/version_check.rs index 7d4c9b38d..758f76c8b 100644 --- a/engine/language_client_codegen/src/version_check.rs +++ b/engine/language_client_codegen/src/version_check.rs @@ -109,6 +109,9 @@ pub fn check_version( GeneratorOutputType::Typescript => { format!("npm install --save-dev @boundaryml/baml@{}", gen_version) } + GeneratorOutputType::TypescriptReact => { + format!("npm install --save-dev @boundaryml/baml@{}", gen_version) + } GeneratorOutputType::RubySorbet => format!("gem install baml -v {}", gen_version), }; ( diff --git a/engine/language_client_typescript/.gitignore b/engine/language_client_typescript/.gitignore index 94da22175..18b335bf7 100644 --- a/engine/language_client_typescript/.gitignore +++ b/engine/language_client_typescript/.gitignore @@ -1,2 +1,4 @@ # autogenerated by NAPI npm +artifacts +dist diff --git a/engine/language_client_typescript/async_context_vars.d.ts b/engine/language_client_typescript/artifacts/async_context_vars.d.ts similarity index 100% rename from engine/language_client_typescript/async_context_vars.d.ts rename to engine/language_client_typescript/artifacts/async_context_vars.d.ts diff --git a/engine/language_client_typescript/artifacts/async_context_vars.d.ts.map b/engine/language_client_typescript/artifacts/async_context_vars.d.ts.map new file mode 100644 index 000000000..80a0c06c8 --- /dev/null +++ b/engine/language_client_typescript/artifacts/async_context_vars.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"async_context_vars.d.ts","sourceRoot":"","sources":["../typescript_src/async_context_vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGrF,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,GAAG,CAA0C;gBAEzC,EAAE,EAAE,WAAW;IAS3B,WAAW,IAAI,OAAO;IAYtB,KAAK,IAAI,IAAI;IAKb,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK9C,YAAY,IAAI,qBAAqB;IASrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC;IAKtF,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAa7C,KAAK,IAAI,IAAI;IAIb,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI;IAYvE,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAuB3F,YAAY,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;CAuBtG"} \ No newline at end of file diff --git a/engine/language_client_typescript/async_context_vars.js b/engine/language_client_typescript/artifacts/async_context_vars.js similarity index 100% rename from engine/language_client_typescript/async_context_vars.js rename to engine/language_client_typescript/artifacts/async_context_vars.js diff --git a/engine/language_client_typescript/index.d.ts b/engine/language_client_typescript/artifacts/errors.d.ts similarity index 67% rename from engine/language_client_typescript/index.d.ts rename to engine/language_client_typescript/artifacts/errors.d.ts index 96f7782aa..17d6bf497 100644 --- a/engine/language_client_typescript/index.d.ts +++ b/engine/language_client_typescript/artifacts/errors.d.ts @@ -1,6 +1,3 @@ -export { BamlRuntime, FunctionResult, FunctionResultStream, BamlImage as Image, ClientBuilder, BamlAudio as Audio, invoke_runtime_cli, ClientRegistry, BamlLogEvent, } from "./native"; -export { BamlStream } from "./stream"; -export { BamlCtxManager } from "./async_context_vars"; export declare class BamlClientFinishReasonError extends Error { prompt: string; raw_output: string; @@ -16,4 +13,4 @@ export declare class BamlValidationError extends Error { static from(error: Error): BamlValidationError | undefined; } export declare function createBamlValidationError(error: Error): BamlValidationError | BamlClientFinishReasonError | Error; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file +//# sourceMappingURL=errors.d.ts.map \ No newline at end of file diff --git a/engine/language_client_typescript/artifacts/errors.d.ts.map b/engine/language_client_typescript/artifacts/errors.d.ts.map new file mode 100644 index 000000000..48102e1d2 --- /dev/null +++ b/engine/language_client_typescript/artifacts/errors.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../typescript_src/errors.ts"],"names":[],"mappings":"AACA,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;gBAEP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS/D,MAAM,IAAI,MAAM;IAahB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,2BAA2B,GAAG,SAAS;CAoBnE;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;gBAEP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS/D,MAAM,IAAI,MAAM;IAahB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,GAAG,SAAS;CAiB3D;AAGD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,GACX,mBAAmB,GAAG,2BAA2B,GAAG,KAAK,CAa3D"} \ No newline at end of file diff --git a/engine/language_client_typescript/index.js b/engine/language_client_typescript/artifacts/errors.js similarity index 62% rename from engine/language_client_typescript/index.js rename to engine/language_client_typescript/artifacts/errors.js index cdef3fe1b..187833c5e 100644 --- a/engine/language_client_typescript/index.js +++ b/engine/language_client_typescript/artifacts/errors.js @@ -1,20 +1,7 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.createBamlValidationError = exports.BamlValidationError = exports.BamlClientFinishReasonError = exports.BamlCtxManager = exports.BamlStream = exports.BamlLogEvent = exports.ClientRegistry = exports.invoke_runtime_cli = exports.Audio = exports.ClientBuilder = exports.Image = exports.FunctionResultStream = exports.FunctionResult = exports.BamlRuntime = void 0; -var native_1 = require("./native"); -Object.defineProperty(exports, "BamlRuntime", { enumerable: true, get: function () { return native_1.BamlRuntime; } }); -Object.defineProperty(exports, "FunctionResult", { enumerable: true, get: function () { return native_1.FunctionResult; } }); -Object.defineProperty(exports, "FunctionResultStream", { enumerable: true, get: function () { return native_1.FunctionResultStream; } }); -Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return native_1.BamlImage; } }); -Object.defineProperty(exports, "ClientBuilder", { enumerable: true, get: function () { return native_1.ClientBuilder; } }); -Object.defineProperty(exports, "Audio", { enumerable: true, get: function () { return native_1.BamlAudio; } }); -Object.defineProperty(exports, "invoke_runtime_cli", { enumerable: true, get: function () { return native_1.invoke_runtime_cli; } }); -Object.defineProperty(exports, "ClientRegistry", { enumerable: true, get: function () { return native_1.ClientRegistry; } }); -Object.defineProperty(exports, "BamlLogEvent", { enumerable: true, get: function () { return native_1.BamlLogEvent; } }); -var stream_1 = require("./stream"); -Object.defineProperty(exports, "BamlStream", { enumerable: true, get: function () { return stream_1.BamlStream; } }); -var async_context_vars_1 = require("./async_context_vars"); -Object.defineProperty(exports, "BamlCtxManager", { enumerable: true, get: function () { return async_context_vars_1.BamlCtxManager; } }); +exports.BamlValidationError = exports.BamlClientFinishReasonError = void 0; +exports.createBamlValidationError = createBamlValidationError; class BamlClientFinishReasonError extends Error { prompt; raw_output; @@ -100,5 +87,3 @@ function createBamlValidationError(error) { // otherwise return the original error return error; } -exports.createBamlValidationError = createBamlValidationError; -// No need for a separate throwBamlValidationError function in TypeScript diff --git a/engine/language_client_typescript/artifacts/index.d.ts b/engine/language_client_typescript/artifacts/index.d.ts new file mode 100644 index 000000000..7cb6b7e0d --- /dev/null +++ b/engine/language_client_typescript/artifacts/index.d.ts @@ -0,0 +1,5 @@ +export { BamlRuntime, FunctionResult, FunctionResultStream, BamlImage as Image, ClientBuilder, BamlAudio as Audio, invoke_runtime_cli, ClientRegistry, BamlLogEvent, } from "./native"; +export { BamlStream } from "./stream"; +export { BamlCtxManager } from "./async_context_vars"; +export * from "./errors"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/engine/language_client_typescript/artifacts/index.d.ts.map b/engine/language_client_typescript/artifacts/index.d.ts.map new file mode 100644 index 000000000..127851105 --- /dev/null +++ b/engine/language_client_typescript/artifacts/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../typescript_src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,SAAS,IAAI,KAAK,EAClB,aAAa,EACb,SAAS,IAAI,KAAK,EAClB,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,cAAc,UAAU,CAAC"} \ No newline at end of file diff --git a/engine/language_client_typescript/artifacts/index.js b/engine/language_client_typescript/artifacts/index.js new file mode 100644 index 000000000..e6225253b --- /dev/null +++ b/engine/language_client_typescript/artifacts/index.js @@ -0,0 +1,33 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BamlCtxManager = exports.BamlStream = exports.BamlLogEvent = exports.ClientRegistry = exports.invoke_runtime_cli = exports.Audio = exports.ClientBuilder = exports.Image = exports.FunctionResultStream = exports.FunctionResult = exports.BamlRuntime = void 0; +var native_1 = require("./native"); +Object.defineProperty(exports, "BamlRuntime", { enumerable: true, get: function () { return native_1.BamlRuntime; } }); +Object.defineProperty(exports, "FunctionResult", { enumerable: true, get: function () { return native_1.FunctionResult; } }); +Object.defineProperty(exports, "FunctionResultStream", { enumerable: true, get: function () { return native_1.FunctionResultStream; } }); +Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return native_1.BamlImage; } }); +Object.defineProperty(exports, "ClientBuilder", { enumerable: true, get: function () { return native_1.ClientBuilder; } }); +Object.defineProperty(exports, "Audio", { enumerable: true, get: function () { return native_1.BamlAudio; } }); +Object.defineProperty(exports, "invoke_runtime_cli", { enumerable: true, get: function () { return native_1.invoke_runtime_cli; } }); +Object.defineProperty(exports, "ClientRegistry", { enumerable: true, get: function () { return native_1.ClientRegistry; } }); +Object.defineProperty(exports, "BamlLogEvent", { enumerable: true, get: function () { return native_1.BamlLogEvent; } }); +var stream_1 = require("./stream"); +Object.defineProperty(exports, "BamlStream", { enumerable: true, get: function () { return stream_1.BamlStream; } }); +var async_context_vars_1 = require("./async_context_vars"); +Object.defineProperty(exports, "BamlCtxManager", { enumerable: true, get: function () { return async_context_vars_1.BamlCtxManager; } }); +__exportStar(require("./errors"), exports); +// No need for a separate throwBamlValidationError function in TypeScript diff --git a/engine/language_client_typescript/artifacts/native.d.ts b/engine/language_client_typescript/artifacts/native.d.ts new file mode 100644 index 000000000..19dd51610 --- /dev/null +++ b/engine/language_client_typescript/artifacts/native.d.ts @@ -0,0 +1,133 @@ +/* auto-generated by NAPI-RS */ +/* eslint-disable */ +export declare class BamlAudio { + static fromUrl(url: string): BamlAudio + static fromBase64(mediaType: string, base64: string): BamlAudio + isUrl(): boolean + asUrl(): string + asBase64(): [string, string] + toJSON(): any +} + +export declare class BamlImage { + static fromUrl(url: string): BamlImage + static fromBase64(mediaType: string, base64: string): BamlImage + isUrl(): boolean + asUrl(): string + asBase64(): [string, string] + toJSON(): any +} + +export declare class BamlRuntime { + static fromDirectory(directory: string, envVars: Record): BamlRuntime + static fromFiles(rootPath: string, files: Record, envVars: Record): BamlRuntime + reset(rootPath: string, files: Record, envVars: Record): void + createContextManager(): RuntimeContextManager + callFunction(functionName: string, args: { [string]: any }, ctx: RuntimeContextManager, tb?: TypeBuilder | undefined | null, cb?: ClientRegistry | undefined | null): Promise + callFunctionSync(functionName: string, args: { [string]: any }, ctx: RuntimeContextManager, tb?: TypeBuilder | undefined | null, cb?: ClientRegistry | undefined | null): FunctionResult + streamFunction(functionName: string, args: { [string]: any }, cb: ((err: any, param: FunctionResult) => void) | undefined, ctx: RuntimeContextManager, tb?: TypeBuilder | undefined | null, clientRegistry?: ClientRegistry | undefined | null): FunctionResultStream + streamFunctionSync(functionName: string, args: { [string]: any }, cb: ((err: any, param: FunctionResult) => void) | undefined, ctx: RuntimeContextManager, tb?: TypeBuilder | undefined | null, clientRegistry?: ClientRegistry | undefined | null): FunctionResultStream + setLogEventCallback(func?: undefined | ((err: any, param: BamlLogEvent) => void)): void + flush(): void + drainStats(): TraceStats +} + +export declare class BamlSpan { + static new(runtime: BamlRuntime, functionName: string, args: any, ctx: RuntimeContextManager): BamlSpan + finish(result: any, ctx: RuntimeContextManager): any +} + +export declare class ClassBuilder { + field(): FieldType + property(name: string): ClassPropertyBuilder +} + +export declare class ClassPropertyBuilder { + setType(fieldType: FieldType): ClassPropertyBuilder + alias(alias?: string | undefined | null): ClassPropertyBuilder + description(description?: string | undefined | null): ClassPropertyBuilder +} + +export declare class ClientRegistry { + constructor() + addLlmClient(name: string, provider: string, options: { [string]: any }, retryPolicy?: string | undefined | null): void + setPrimary(primary: string): void +} + +export declare class EnumBuilder { + value(name: string): EnumValueBuilder + alias(alias?: string | undefined | null): EnumBuilder + field(): FieldType +} + +export declare class EnumValueBuilder { + alias(alias?: string | undefined | null): EnumValueBuilder + skip(skip?: boolean | undefined | null): EnumValueBuilder + description(description?: string | undefined | null): EnumValueBuilder +} + +export declare class FieldType { + list(): FieldType + optional(): FieldType +} + +export declare class FunctionResult { + isOk(): boolean + parsed(allowPartials: boolean): any +} + +export declare class FunctionResultStream { + onEvent(func: (err: any, param: FunctionResult) => void): void + done(rctx: RuntimeContextManager): Promise +} + +export declare class RuntimeContextManager { + upsertTags(tags: any): void + deepClone(): RuntimeContextManager + contextDepth(): number +} + +export declare class TraceStats { + get failed(): number + get started(): number + get finalized(): number + get submitted(): number + get sent(): number + get done(): number + toJson(): string +} + +export declare class TypeBuilder { + constructor() + getEnum(name: string): EnumBuilder + getClass(name: string): ClassBuilder + list(inner: FieldType): FieldType + optional(inner: FieldType): FieldType + string(): FieldType + literalString(value: string): FieldType + literalInt(value: number): FieldType + literalBool(value: boolean): FieldType + int(): FieldType + float(): FieldType + bool(): FieldType + null(): FieldType + map(key: FieldType, value: FieldType): FieldType + union(types: Array): FieldType +} + +export interface BamlLogEvent { + metadata: LogEventMetadata + prompt?: string + rawOutput?: string + parsedOutput?: string + startTime: string +} + +export declare export declare function invoke_runtime_cli(params: Array): void + +export interface LogEventMetadata { + eventId: string + parentId?: string + rootEventId: string +} + diff --git a/engine/language_client_typescript/native.js b/engine/language_client_typescript/artifacts/native.js similarity index 100% rename from engine/language_client_typescript/native.js rename to engine/language_client_typescript/artifacts/native.js diff --git a/engine/language_client_typescript/stream.d.ts b/engine/language_client_typescript/artifacts/stream.d.ts similarity index 64% rename from engine/language_client_typescript/stream.d.ts rename to engine/language_client_typescript/artifacts/stream.d.ts index dd7f000cd..ac1885c74 100644 --- a/engine/language_client_typescript/stream.d.ts +++ b/engine/language_client_typescript/artifacts/stream.d.ts @@ -11,5 +11,14 @@ export declare class BamlStream { private driveToCompletionInBg; [Symbol.asyncIterator](): AsyncIterableIterator; getFinalResponse(): Promise; + /** + * Converts the BAML stream to a Next.js compatible stream. + * This is used for server-side streaming in Next.js API routes and Server Actions. + * The stream emits JSON-encoded messages containing either: + * - Partial results of type PartialOutputType + * - Final result of type FinalOutputType + * - Error information + */ + toStreamable(): ReadableStream; } //# sourceMappingURL=stream.d.ts.map \ No newline at end of file diff --git a/engine/language_client_typescript/artifacts/stream.d.ts.map b/engine/language_client_typescript/artifacts/stream.d.ts.map new file mode 100644 index 000000000..5b92dfe52 --- /dev/null +++ b/engine/language_client_typescript/artifacts/stream.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../typescript_src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEtF,qBAAa,UAAU,CAAC,iBAAiB,EAAE,eAAe;IAMtD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IARpB,OAAO,CAAC,IAAI,CAAuC;IAEnD,OAAO,CAAC,UAAU,CAAgC;gBAGxC,SAAS,EAAE,oBAAoB,EAC/B,aAAa,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,iBAAiB,EAC5D,WAAW,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,eAAe,EACxD,UAAU,EAAE,qBAAqB;YAG7B,iBAAiB;IAiB/B,OAAO,CAAC,qBAAqB;IAQtB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,iBAAiB,CAAC;IAqBnE,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;IAMlD;;;;;;;OAOG;IACH,YAAY,IAAI,cAAc,CAAC,UAAU,CAAC;CAoD3C"} \ No newline at end of file diff --git a/engine/language_client_typescript/artifacts/stream.js b/engine/language_client_typescript/artifacts/stream.js new file mode 100644 index 000000000..7fcff3fb8 --- /dev/null +++ b/engine/language_client_typescript/artifacts/stream.js @@ -0,0 +1,119 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BamlStream = void 0; +const errors_1 = require("./errors"); +class BamlStream { + ffiStream; + partialCoerce; + finalCoerce; + ctxManager; + task = null; + eventQueue = []; + constructor(ffiStream, partialCoerce, finalCoerce, ctxManager) { + this.ffiStream = ffiStream; + this.partialCoerce = partialCoerce; + this.finalCoerce = finalCoerce; + this.ctxManager = ctxManager; + } + async driveToCompletion() { + try { + this.ffiStream.onEvent((err, data) => { + if (err) { + return; + } + else { + this.eventQueue.push(data); + } + }); + const retval = await this.ffiStream.done(this.ctxManager); + return retval; + } + finally { + this.eventQueue.push(null); + } + } + driveToCompletionInBg() { + if (this.task === null) { + this.task = this.driveToCompletion(); + } + return this.task; + } + async *[Symbol.asyncIterator]() { + this.driveToCompletionInBg(); + while (true) { + const event = this.eventQueue.shift(); + if (event === undefined) { + await new Promise((resolve) => setTimeout(resolve, 100)); + continue; + } + if (event === null) { + break; + } + if (event.isOk()) { + yield this.partialCoerce(event.parsed(true)); + } + } + } + async getFinalResponse() { + const final = await this.driveToCompletionInBg(); + return this.finalCoerce(final.parsed(false)); + } + /** + * Converts the BAML stream to a Next.js compatible stream. + * This is used for server-side streaming in Next.js API routes and Server Actions. + * The stream emits JSON-encoded messages containing either: + * - Partial results of type PartialOutputType + * - Final result of type FinalOutputType + * - Error information + */ + toStreamable() { + const stream = this; + const encoder = new TextEncoder(); + return new ReadableStream({ + async start(controller) { + try { + // Stream partials + for await (const partial of stream) { + controller.enqueue(encoder.encode(JSON.stringify({ partial }))); + } + try { + const final = await stream.getFinalResponse(); + controller.enqueue(encoder.encode(JSON.stringify({ final }))); + controller.close(); + return; + } + catch (err) { + const bamlError = (0, errors_1.createBamlValidationError)(err instanceof Error ? err : new Error(String(err))); + const errorPayload = bamlError instanceof errors_1.BamlValidationError || bamlError instanceof errors_1.BamlClientFinishReasonError + ? { + type: bamlError.name, + message: bamlError.message, + prompt: bamlError.prompt, + raw_output: bamlError.raw_output, + } + : { + type: 'UnknownError', + message: bamlError.message, + prompt: '', + raw_output: '', + }; + controller.enqueue(encoder.encode(JSON.stringify({ error: errorPayload }))); + controller.close(); + return; + } + } + catch (streamErr) { + const errorPayload = { + type: 'StreamError', + message: streamErr instanceof Error ? streamErr.message : 'Error in stream processing', + prompt: '', + raw_output: '', + }; + controller.enqueue(encoder.encode(JSON.stringify({ error: errorPayload }))); + controller.close(); + } + }, + }); + } +} +exports.BamlStream = BamlStream; diff --git a/engine/language_client_typescript/type_builder.d.ts b/engine/language_client_typescript/artifacts/type_builder.d.ts similarity index 100% rename from engine/language_client_typescript/type_builder.d.ts rename to engine/language_client_typescript/artifacts/type_builder.d.ts diff --git a/engine/language_client_typescript/artifacts/type_builder.d.ts.map b/engine/language_client_typescript/artifacts/type_builder.d.ts.map new file mode 100644 index 000000000..ccb773b51 --- /dev/null +++ b/engine/language_client_typescript/artifacts/type_builder.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"type_builder.d.ts","sourceRoot":"","sources":["../typescript_src/type_builder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/engine/language_client_typescript/type_builder.js b/engine/language_client_typescript/artifacts/type_builder.js similarity index 100% rename from engine/language_client_typescript/type_builder.js rename to engine/language_client_typescript/artifacts/type_builder.js diff --git a/engine/language_client_typescript/async_context_vars.d.ts.map b/engine/language_client_typescript/async_context_vars.d.ts.map deleted file mode 100644 index 55cedafcf..000000000 --- a/engine/language_client_typescript/async_context_vars.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"async_context_vars.d.ts","sourceRoot":"","sources":["typescript_src/async_context_vars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGrF,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAa;IACvB,OAAO,CAAC,GAAG,CAA0C;gBAEzC,EAAE,EAAE,WAAW;IAS3B,WAAW,IAAI,OAAO;IAYtB,KAAK,IAAI,IAAI;IAKb,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAK9C,YAAY,IAAI,qBAAqB;IASrC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC;IAKtF,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAa7C,KAAK,IAAI,IAAI;IAIb,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI;IAYvE,WAAW,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;IAuB3F,YAAY,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;CAuBtG"} \ No newline at end of file diff --git a/engine/language_client_typescript/cli.js b/engine/language_client_typescript/cli.js index 713c64d0a..e88c61d33 100755 --- a/engine/language_client_typescript/cli.js +++ b/engine/language_client_typescript/cli.js @@ -5,6 +5,6 @@ if (require.main === module) { process.env.BAML_LOG = 'info' } - const baml = require('./native') + const baml = require('./artifacts/native') baml.invoke_runtime_cli(process.argv.slice(1)) } diff --git a/engine/language_client_typescript/index.d.ts.map b/engine/language_client_typescript/index.d.ts.map deleted file mode 100644 index c1b009247..000000000 --- a/engine/language_client_typescript/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["typescript_src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,SAAS,IAAI,KAAK,EAClB,aAAa,EACb,SAAS,IAAI,KAAK,EAClB,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;gBAEP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS/D,MAAM,IAAI,MAAM;IAahB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,2BAA2B,GAAG,SAAS;CAoBnE;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;gBAEP,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAS/D,MAAM,IAAI,MAAM;IAahB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,mBAAmB,GAAG,SAAS;CAiB3D;AAGD,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,GACX,mBAAmB,GAAG,2BAA2B,GAAG,KAAK,CAa3D"} \ No newline at end of file diff --git a/engine/language_client_typescript/package.json b/engine/language_client_typescript/package.json index 000636e49..45ec12e6a 100644 --- a/engine/language_client_typescript/package.json +++ b/engine/language_client_typescript/package.json @@ -21,19 +21,48 @@ }, "files": [ "./cli.js", - "./index.d.ts", - "./index.js", - "./native.d.ts", - "./native.js", - "./async_context_vars.d.ts", - "./async_context_vars.js", - "./stream.d.ts", - "./stream.js", - "./type_builder.d.ts", - "./type_builder.js" + "./artifacts/index.d.ts", + "./artifacts/index.js", + "./artifacts/native.d.ts", + "./artifacts/native.js", + "./artifacts/async_context_vars.d.ts", + "./artifacts/async_context_vars.js", + "./artifacts/stream.d.ts", + "./artifacts/stream.js", + "./artifacts/type_builder.d.ts", + "./artifacts/type_builder.js", + "./artifacts/errors.d.ts", + "./artifacts/errors.js" ], - "main": "./index.js", - "types": "./index.d.ts", + "main": "./artifacts/index.js", + "types": "./artifacts/index.d.ts", + "exports": { + ".": { + "types": "./artifacts/index.d.ts", + "node": "./artifacts/index.js", + "default": "./artifacts/client.js" + }, + "./type_builder": { + "types": "./artifacts/type_builder.d.ts", + "default": "./artifacts/type_builder.js" + }, + "./async_context_vars": { + "types": "./artifacts/async_context_vars.d.ts", + "default": "./artifacts/async_context_vars.js" + }, + "./stream": { + "types": "./artifacts/stream.d.ts", + "default": "./artifacts/stream.js" + }, + "./native": { + "types": "./artifacts/native.d.ts", + "default": "./artifacts/native.js" + }, + "./errors": { + "types": "./artifacts/errors.d.ts", + "default": "./artifacts/errors.js" + } + }, "napi": { "binaryName": "baml", "targets": [ @@ -44,7 +73,8 @@ "x86_64-pc-windows-msvc", "x86_64-unknown-linux-gnu", "x86_64-unknown-linux-musl" - ] + ], + "npmClient": "pnpm" }, "engines": { "node": ">= 10" @@ -56,10 +86,10 @@ "scripts": { "artifacts": "napi artifacts", "build": "pnpm build:napi-release && pnpm build:ts_build", - "build:debug": "pnpm build:napi-debug && pnpm build:ts_build", + "build:debug": "pnpm build:napi-debug && pnpm build:ts_build && pnpm napi create-npm-dirs && pnpm artifacts", "build:napi-release": "pnpm build:napi-debug --release", - "build:napi-debug": "napi build --js ./native.js --dts ./native.d.ts --platform", - "build:ts_build": "tsc ./typescript_src/*.ts --outDir ./ --module nodenext --module nodenext --allowJs --declaration true --declarationMap true || true", + "build:napi-debug": "napi build -o ./artifacts --js ./native.js --dts ./native.d.ts --platform", + "build:ts_build": "tsc ./typescript_src/*.ts --outDir ./artifacts --module nodenext --module nodenext --allowJs --declaration true --declarationMap true || true", "format": "run-p format:biome format:rs format:toml", "format:biome": "biome --write .", "format:rs": "cargo fmt", @@ -75,7 +105,7 @@ "ts-node": "^10.9.2", "typescript": "^5.4.5" }, - "packageManager": "pnpm@9.0.6", + "packageManager": "pnpm@9.12.0", "bugs": { "url": "https://github.com/BoundaryML/baml/issues" }, @@ -84,4 +114,4 @@ "dependencies": { "@scarf/scarf": "^1.3.0" } -} +} \ No newline at end of file diff --git a/engine/language_client_typescript/stream.d.ts.map b/engine/language_client_typescript/stream.d.ts.map deleted file mode 100644 index c780c7a95..000000000 --- a/engine/language_client_typescript/stream.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["typescript_src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAA;AAEtF,qBAAa,UAAU,CAAC,iBAAiB,EAAE,eAAe;IAMtD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IARpB,OAAO,CAAC,IAAI,CAAuC;IAEnD,OAAO,CAAC,UAAU,CAAgC;gBAGxC,SAAS,EAAE,oBAAoB,EAC/B,aAAa,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,iBAAiB,EAC5D,WAAW,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,eAAe,EACxD,UAAU,EAAE,qBAAqB;YAG7B,iBAAiB;IAiB/B,OAAO,CAAC,qBAAqB;IAQtB,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,iBAAiB,CAAC;IAqBnE,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC;CAKnD"} \ No newline at end of file diff --git a/engine/language_client_typescript/stream.js b/engine/language_client_typescript/stream.js index 168cd054f..1813b4482 100644 --- a/engine/language_client_typescript/stream.js +++ b/engine/language_client_typescript/stream.js @@ -57,5 +57,28 @@ class BamlStream { const final = await this.driveToCompletionInBg(); return this.finalCoerce(final.parsed(false)); } + /** + * Converts the BAML stream to a Next.js compatible stream. + * This is used for server-side streaming in Next.js API routes and Server Actions. + */ + toStreamable() { + const stream = this; + return new ReadableStream({ + async start(controller) { + const encoder = new TextEncoder(); + try { + for await (const partial of stream) { + controller.enqueue(encoder.encode(JSON.stringify({ partial }))); + } + const final = await stream.getFinalResponse(); + controller.enqueue(encoder.encode(JSON.stringify({ final: final }))); + controller.close(); + } + catch (error) { + controller.error(error); + } + } + }); + } } exports.BamlStream = BamlStream; diff --git a/engine/language_client_typescript/type_builder.d.ts.map b/engine/language_client_typescript/type_builder.d.ts.map deleted file mode 100644 index b94fbf2e0..000000000 --- a/engine/language_client_typescript/type_builder.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"type_builder.d.ts","sourceRoot":"","sources":["typescript_src/type_builder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/engine/language_client_typescript/typescript_src/errors.ts b/engine/language_client_typescript/typescript_src/errors.ts new file mode 100644 index 000000000..953aab6da --- /dev/null +++ b/engine/language_client_typescript/typescript_src/errors.ts @@ -0,0 +1,111 @@ + +export class BamlClientFinishReasonError extends Error { + prompt: string; + raw_output: string; + + constructor(prompt: string, raw_output: string, message: string) { + super(message); + this.name = "BamlClientFinishReasonError"; + this.prompt = prompt; + this.raw_output = raw_output; + + Object.setPrototypeOf(this, BamlClientFinishReasonError.prototype); + } + + toJSON(): string { + return JSON.stringify( + { + name: this.name, + message: this.message, + raw_output: this.raw_output, + prompt: this.prompt, + }, + null, + 2 + ); + } + + static from(error: Error): BamlClientFinishReasonError | undefined { + if (error.message.includes("BamlClientFinishReasonError")) { + try { + const errorData = JSON.parse(error.message); + if (errorData.type === "BamlClientFinishReasonError") { + return new BamlClientFinishReasonError( + errorData.prompt || "", + errorData.raw_output || "", + errorData.message || error.message + ); + } else { + console.warn("Not a BamlClientFinishReasonError:", error); + } + } catch (parseError) { + // If JSON parsing fails, fall back to the original error + console.warn("Failed to parse BamlClientFinishReasonError:", parseError); + } + } + return undefined; + } +} + +export class BamlValidationError extends Error { + prompt: string; + raw_output: string; + + constructor(prompt: string, raw_output: string, message: string) { + super(message); + this.name = "BamlValidationError"; + this.prompt = prompt; + this.raw_output = raw_output; + + Object.setPrototypeOf(this, BamlValidationError.prototype); + } + + toJSON(): string { + return JSON.stringify( + { + name: this.name, + message: this.message, + raw_output: this.raw_output, + prompt: this.prompt, + }, + null, + 2 + ); + } + + static from(error: Error): BamlValidationError | undefined { + if (error.message.includes("BamlValidationError")) { + try { + const errorData = JSON.parse(error.message); + if (errorData.type === "BamlValidationError") { + return new BamlValidationError( + errorData.prompt || "", + errorData.raw_output || "", + errorData.message || error.message + ); + } + } catch (parseError) { + console.warn("Failed to parse BamlValidationError:", parseError); + } + } + return undefined; + } +} + +// Helper function to safely create a BamlValidationError +export function createBamlValidationError( + error: Error +): BamlValidationError | BamlClientFinishReasonError | Error { + const bamlValidationError = BamlValidationError.from(error); + if (bamlValidationError) { + return bamlValidationError; + } + + const bamlClientFinishReasonError = BamlClientFinishReasonError.from(error); + if (bamlClientFinishReasonError) { + return bamlClientFinishReasonError; + } + + // otherwise return the original error + return error; +} diff --git a/engine/language_client_typescript/typescript_src/index.ts b/engine/language_client_typescript/typescript_src/index.ts index d0aff086d..1cb7f5901 100644 --- a/engine/language_client_typescript/typescript_src/index.ts +++ b/engine/language_client_typescript/typescript_src/index.ts @@ -11,116 +11,5 @@ export { } from "./native"; export { BamlStream } from "./stream"; export { BamlCtxManager } from "./async_context_vars"; - -export class BamlClientFinishReasonError extends Error { - prompt: string; - raw_output: string; - - constructor(prompt: string, raw_output: string, message: string) { - super(message); - this.name = "BamlClientFinishReasonError"; - this.prompt = prompt; - this.raw_output = raw_output; - - Object.setPrototypeOf(this, BamlClientFinishReasonError.prototype); - } - - toJSON(): string { - return JSON.stringify( - { - name: this.name, - message: this.message, - raw_output: this.raw_output, - prompt: this.prompt, - }, - null, - 2 - ); - } - - static from(error: Error): BamlClientFinishReasonError | undefined { - if (error.message.includes("BamlClientFinishReasonError")) { - try { - const errorData = JSON.parse(error.message); - if (errorData.type === "BamlClientFinishReasonError") { - return new BamlClientFinishReasonError( - errorData.prompt || "", - errorData.raw_output || "", - errorData.message || error.message - ); - } else { - console.warn("Not a BamlClientFinishReasonError:", error); - } - } catch (parseError) { - // If JSON parsing fails, fall back to the original error - console.warn("Failed to parse BamlClientFinishReasonError:", parseError); - } - } - return undefined; - } -} - -export class BamlValidationError extends Error { - prompt: string; - raw_output: string; - - constructor(prompt: string, raw_output: string, message: string) { - super(message); - this.name = "BamlValidationError"; - this.prompt = prompt; - this.raw_output = raw_output; - - Object.setPrototypeOf(this, BamlValidationError.prototype); - } - - toJSON(): string { - return JSON.stringify( - { - name: this.name, - message: this.message, - raw_output: this.raw_output, - prompt: this.prompt, - }, - null, - 2 - ); - } - - static from(error: Error): BamlValidationError | undefined { - if (error.message.includes("BamlValidationError")) { - try { - const errorData = JSON.parse(error.message); - if (errorData.type === "BamlValidationError") { - return new BamlValidationError( - errorData.prompt || "", - errorData.raw_output || "", - errorData.message || error.message - ); - } - } catch (parseError) { - console.warn("Failed to parse BamlValidationError:", parseError); - } - } - return undefined; - } -} - -// Helper function to safely create a BamlValidationError -export function createBamlValidationError( - error: Error -): BamlValidationError | BamlClientFinishReasonError | Error { - const bamlValidationError = BamlValidationError.from(error); - if (bamlValidationError) { - return bamlValidationError; - } - - const bamlClientFinishReasonError = BamlClientFinishReasonError.from(error); - if (bamlClientFinishReasonError) { - return bamlClientFinishReasonError; - } - - // otherwise return the original error - return error; -} - +export * from "./errors"; // No need for a separate throwBamlValidationError function in TypeScript diff --git a/engine/language_client_typescript/typescript_src/stream.ts b/engine/language_client_typescript/typescript_src/stream.ts index fd30645c3..bc8beff79 100644 --- a/engine/language_client_typescript/typescript_src/stream.ts +++ b/engine/language_client_typescript/typescript_src/stream.ts @@ -1,3 +1,4 @@ +import { BamlClientFinishReasonError, BamlValidationError, createBamlValidationError } from './errors' import { FunctionResult, FunctionResultStream, RuntimeContextManager } from './native' export class BamlStream { @@ -14,7 +15,7 @@ export class BamlStream { private async driveToCompletion(): Promise { try { - this.ffiStream.onEvent((err, data) => { + this.ffiStream.onEvent((err: Error | null, data: FunctionResult | null) => { if (err) { return } else { @@ -63,4 +64,65 @@ export class BamlStream { return this.finalCoerce(final.parsed(false)) } + + /** + * Converts the BAML stream to a Next.js compatible stream. + * This is used for server-side streaming in Next.js API routes and Server Actions. + * The stream emits JSON-encoded messages containing either: + * - Partial results of type PartialOutputType + * - Final result of type FinalOutputType + * - Error information + */ + toStreamable(): ReadableStream { + const stream = this + const encoder = new TextEncoder() + + return new ReadableStream({ + async start(controller) { + try { + // Stream partials + for await (const partial of stream) { + controller.enqueue(encoder.encode(JSON.stringify({ partial }))) + } + + try { + const final = await stream.getFinalResponse() + controller.enqueue(encoder.encode(JSON.stringify({ final }))) + controller.close() + return + } catch (err: any) { + const bamlError = createBamlValidationError(err instanceof Error ? err : new Error(String(err))) + const errorPayload = + bamlError instanceof BamlValidationError || bamlError instanceof BamlClientFinishReasonError + ? { + type: bamlError.name, + message: bamlError.message, + prompt: bamlError.prompt, + raw_output: bamlError.raw_output, + } + : { + type: 'UnknownError', + message: bamlError.message, + prompt: '', + raw_output: '', + } + + controller.enqueue(encoder.encode(JSON.stringify({ error: errorPayload }))) + controller.close() + return + } + } catch (streamErr: unknown) { + const errorPayload = { + type: 'StreamError', + message: streamErr instanceof Error ? streamErr.message : 'Error in stream processing', + prompt: '', + raw_output: '', + } + + controller.enqueue(encoder.encode(JSON.stringify({ error: errorPayload }))) + controller.close() + } + }, + }) + } } diff --git a/fern/.cursorrules b/fern/.cursorrules new file mode 100644 index 000000000..ddc9e6c06 --- /dev/null +++ b/fern/.cursorrules @@ -0,0 +1,320 @@ +You are the world's best documentation writer, renowned for your clarity, precision, and engaging style. Every piece of documentation you produce is: + +1. Clear and precise - no ambiguity, jargon, marketing language or unnecssarily complex language. +2. Concise—short, direct sentences and paragraphs. +3. Scientifically structured—organized like a research paper or technical white paper, with a logical flow and strict attention to detail. +4. Visually engaging—using line breaks, headings, and components to enhance readability. +5. Focused on user success — no marketing language or fluff; just the necessary information. + +# Writing guidelines + +- Titles must always start with an uppercase letter, followed by lowercase letters unless it is a name. Examples: Getting started, Text to speech, Conversational AI... +- No emojis or icons unless absolutely necessary. +- Scientific research tone—professional, factual, and straightforward. +- Avoid long text blocks. Use short paragraphs and line breaks. +- Do not use marketing/promotional language. +- Be concise, direct, and avoid wordiness. +- Tailor the tone and style depending on the location of the content. + - The `docs` tab (/fern/docs folder) contains a mixture of technical and non-technical content. + - The /fern/docs/pages/capabilities folder should not contain any code and should be easy to read for both non-technical and technical readers. + - The /fern/docs/pages/workflows folder is tailored to non-technical readers (specifically enterprise customers) who need detailed step-by-step visual guides. + - The /fern/docs/pages/developer-guides is strictly for technical readers. This contains detailed guides on how to use the SDK or API. + - The best-practices folder contains both tech & non-technical content. + - The `conversational-ai` tab (/fern/conversational-ai) contains content for the conversational-ai product. It is tailored to technical people but may be read by non-technical people. + - The `api-reference` tab (/fern/api-reference) contains content for the API. It is tailored to technical people only. +- If the user asks you to update the changelog, you must create a new changelog file in the /fern/docs/pages/changelog folder with the following file name: `2024-10-13.md` (the date should be the current date). + + - The structure of the changelog should look something like this: + +- Ensure there are well-designed links (if applicable) to take the technical or non-technical reader to the relevant page. + +# Page structure + +- Every `.mdx` file starts with: + ``` + --- + title: + subtitle: + --- + ``` + - Example titles (good, short, first word capitalized): + - Getting started + - Text to speech + - Streaming + - API reference + - Conversational AI + - Example subtitles (concise, some starting with "Learn how to …" for guides): + - Build your first conversational AI voice agent in 5 minutes. + - Learn how to control delivery, pronunciation & emotion of text to speech. +- All documentation images are located in the non-nested /fern/assets/images folder. The path can be referenced in `.mdx` files as /assets/images/.jpg/png/svg. + +## Components + +Use the following components whenever possible to enhance readability and structure. + +### Accordions + +```` + + + You can put other components inside Accordions. + ```ts + export function generateRandomNumber() { + return Math.random(); + } + ``` + + + This is a second option. + + + + This is a third option. + + +```` + +### Callouts (Tips, Notes, Warnings, etc.) + +``` + +This Callout uses a title and a custom icon. + +This adds a note in the content +This raises a warning to watch out for +This indicates a potential error +This draws attention to important information +This suggests a helpful tip +This brings us a checked status +``` + +### Cards & Card Groups + +``` + +View Fern's Python SDK generator. + + + + This is the first card. + + + This is the second card. + + + This is the third card. + + + This is the fourth and final card. + + +``` + +### Code snippets + +- Always use the focus attribute to highlight the code you want to highlight. +- `maxLines` is optional if it's long. +- `wordWrap` is optional if the full text should wrap and be visible. + +```javascript focus={2-4} maxLines=10 wordWrap +console.log('Line 1'); +console.log('Line 2'); +console.log('Line 3'); +console.log('Line 4'); +console.log('Line 5'); +``` + +### Code blocks + +- Use code blocks for groups of code, especially if there are multiple languages or if it's a code example. Always start with Python as the default. + +```` + +```javascript title="helloWorld.js" +console.log("Hello World"); +```` + +```python title="hello_world.py" +print('Hello World!') +``` + +```java title="HelloWorld.java" + class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } +``` + + +``` + +### Steps (for step-by-step guides) + +``` + + ### First Step + Initial instructions. + + ### Second Step + More instructions. + + ### Third Step + Final Instructions + + +``` + +### Frames + +- You must wrap every single image in a frame. +- Every frame must have `background="subtle"` +- Use captions only if the image is not self-explanatory. +- Use ![alt-title](image-url) as opposed to HTML `` tags unless styling. + +``` + + Sample photo of mountains + + +``` + +### Tabs (split up content into different sections) + +``` + + + ☝️ Welcome to the content that you can only see inside the first Tab. + + + ✌️ Here's content that's only inside the second Tab. + + + 💪 Here's content that's only inside the third Tab. + + + +``` + +# Examples of a well-structured piece of documentation + +- Ideally there would be links to either go to the workflows for non-technical users or the developer-guides for technical users. +- The page should be split into sections with a clear structure. + +``` +--- +title: Text to speech +subtitle: Learn how to turn text into lifelike spoken audio with ElevenLabs. +--- + +## Overview + +ElevenLabs [Text to Speech (TTS)](/docs/api-reference/text-to-speech) API turns text into lifelike audio with nuanced intonation, pacing and emotional awareness. [Our models](/docs/models) adapt to textual cues across 32 languages and multiple voice styles and can be used to: + +- Narrate global media campaigns & ads +- Produce audiobooks in multiple languages with complex emotional delivery +- Stream real-time audio from text + +Listen to a sample: + + + +Explore our [Voice Library](https://elevenlabs.io/community) to find the perfect voice for your project. + +## Parameters + +The `text-to-speech` endpoint converts text into natural-sounding speech using three core parameters: + +- `model_id`: Determines the quality, speed, and language support +- `voice_id`: Specifies which voice to use (explore our [Voice Library](https://elevenlabs.io/community)) +- `text`: The input text to be converted to speech +- `output_format`: Determines the audio format, quality, sampling rate & bitrate + +### Voice quality + +For real-time applications, Flash v2.5 provides ultra-low 75ms latency optimized for streaming, while Multilingual v2 delivers the highest quality audio with more nuanced expression. + +Learn more about our [models](/docs/models). + +### Voice options + +ElevenLabs offers thousands of voices across 32 languages through multiple creation methods: + +- [Voice Library](/docs/voice-library) with 3,000+ community-shared voices +- [Professional Voice Cloning](/docs/voice-cloning/professional) for highest-fidelity replicas +- [Instant Voice Cloning](/docs/voice-cloning/instant) for quick voice replication +- [Voice Design](/docs/voice-design) to generate custom voices from text descriptions + +Learn more about our [voice creation options](/docs/voices). + +## Supported formats + +The default response format is "mp3", but other formats like "PCM", & "μ-law" are available. + +- **MP3** + - Sample rates: 22.05kHz - 44.1kHz + - Bitrates: 32kbps - 192kbps + - **Note**: Higher quality options require Creator tier or higher +- **PCM (S16LE)** + - Sample rates: 16kHz - 44.1kHz + - **Note**: Higher quality options require Pro tier or higher +- **μ-law** + - 8kHz sample rate + - Optimized for telephony applications + + + Higher quality audio options are only available on paid tiers - see our [pricing + page](https://elevenlabs.io/pricing) for details. + + +## Supported languages + + + + + +Simply input text in any of our supported languages and select a matching voice from our [Voice Library](https://elevenlabs.io/community). For the most natural results, choose a voice with an accent that matches your target language and region. + +## FAQ + + + + The models interpret emotional context directly from the text input. For example, adding + descriptive text like "she said excitedly" or using exclamation marks will influence the speech + emotion. Voice settings like Stability and Similarity help control the consistency, while the + underlying emotion comes from textual cues. + + + Yes. Instant Voice Cloning quickly mimics another speaker from short clips. For high-fidelity + clones, check out our Professional Voice Clone. + + + Yes. You retain ownership of any audio you generate. However, commercial usage rights are only + available with paid plans. With a paid subscription, you may use generated audio for commercial + purposes and monetize the outputs if you own the IP rights to the input content. + + + Use the low-latency Flash models (Flash v2 or v2.5) optimized for near real-time conversational + or interactive scenarios. See our [latency optimization guide](/docs/latency-optimization) for + more details. + + + The models are nondeterministic. For consistency, use the optional seed parameter, though subtle + differences may still occur. + + + Split long text into segments and use streaming for real-time playback and efficient processing. + To maintain natural prosody flow between chunks, use `previous_text` or `previous_request_ids`. + + +``` diff --git a/fern/01-guide/08-integrations/02-nextjs-app-router.mdx b/fern/01-guide/08-integrations/02-nextjs-app-router.mdx new file mode 100644 index 000000000..7e4da92bf --- /dev/null +++ b/fern/01-guide/08-integrations/02-nextjs-app-router.mdx @@ -0,0 +1,219 @@ +--- +title: Next.js App Router Setup +--- + +This guide walks you through setting up BAML with Next.js App Router, leveraging Server Actions and React Server Components for optimal performance. + +## Quick Start + +Follow the step-by-step instructions below to set up BAML in a new or existing Next.js project. + + +### Create a New Next.js Project + +First, create a new Next.js project with the App Router: + + +```bash npm +npx create-next-app@latest my-baml-app +``` + +```bash pnpm +pnpm create next-app my-baml-app +``` + +```bash yarn +yarn create next-app my-baml-app +``` + + +When prompted, make sure to: +- Select **Yes** for "Would you like to use TypeScript?" +- Select **Yes** for "Would you like to use the App Router? (recommended)" +- Configure other options as needed for your project + +### Install Dependencies + +Next, install BAML and its dependencies: + + + +### Configure Next.js + +Update your `next.config.mjs`: + + + +### Initialize BAML + +Create a new BAML project in your Next.js application: + + +This will create a `baml_src` directory with starter code. + +### Setup Environment Variables + + + +### Setup BAML Client Provider + + + +### Setup BAML Next.js Generator + + + +### Generate BAML Client + + + +### Generated Server Actions + +BAML automatically generates type-safe Next.js server actions and React hooks for your BAML functions. When you create a BAML function like `WriteMeAStory`, the BAML CLI will generate: + +- A server action that handles the API call +- A React hook (`useWriteMeAStoryAction`) that provides streaming, loading states, and error handling +- TypeScript types for all inputs and outputs + +Here's an example of using the auto-generated hook: + + + + + + +### Custom Server Actions + +Custom Server Actions wrap BAML functions with your own server-side logic. Use them when you need to: + +- Add authentication or authorization checks +- Validate or sanitize inputs +- Implement rate limiting +- Add custom error handling +- Transform inputs or responses + + + + + + + +### Update Package Scripts + +Update your `package.json` scripts: + +```json {3,4} +{ + "scripts": { + "prebuild": "npm run generate", + "generate": "baml-cli generate", + "dev": "next dev", + "build": "next build", + "start": "next start", + } +} +``` + + + +## Best Practices + +1. **Component Organization** + - Keep BAML calls in server components + - Use server actions for mutations + - Implement proper error boundaries + - Handle cleanup on unmount + +2. **Performance** + - Use streaming for long responses + - Implement proper loading states + - Cache results when appropriate + - Monitor memory usage + +3. **Error Handling** + - BAML provides three types of errors you need to handle: + ```typescript + import { BamlValidationError, BamlClientFinishReasonError } from "@boundaryml/baml/errors" + + try { + const result = await myBamlFunction(params); + } catch (e) { + if (e instanceof BamlValidationError) { + // Thrown when BAML fails to parse LLM output + console.error('Parsing error:', e.message); + console.error('Original prompt:', e.prompt); + console.error('Raw LLM output:', e.raw_output); + } else if (e instanceof BamlClientFinishReasonError) { + // Thrown when LLM terminates with disallowed finish reason + console.error('LLM terminated early:', e.finish_reason); + console.error('Error message:', e.message); + console.error('Original prompt:', e.prompt); + console.error('Partial output:', e.raw_output); + } else { + // Handle other errors (network, etc) + console.error('Other error:', e); + } + } + ``` + - Create error boundaries for graceful UI fallbacks: + ```typescript + 'use client'; + + import { useEffect } from 'react'; + import { useWriteMeAStoryAction } from './baml_client'; + + export function StoryGenerator() { + const { + data, + error, + isPending, + mutate + } = useWriteMeAStoryAction(); + + useEffect(() => { + if (error) { + if (error instanceof BamlValidationError) { + // Show parsing error UI + toast.error('Failed to understand AI response'); + } else if (error instanceof BamlClientFinishReasonError) { + // Show early termination UI + toast.error('AI response was cut off'); + } else { + // Show generic error UI + toast.error('Something went wrong'); + } + } + }, [error]); + + return ( +
+ {isPending && } + {error && } + {data && } + + +
+ ); + } + ``` + - Implement retry mechanisms + - Show meaningful error messages + - Handle network errors + - Clean up resources + +4. **Security** + - Never expose API keys + - Validate user input + - Implement rate limiting + - Use proper authentication + +## Next Steps + +- Learn about [Streaming](./nextjs-streaming) for real-time updates +- Explore [Environment Setup](./nextjs-environment) for configuration +- Check out [Examples](./nextjs-examples) for more use cases diff --git a/fern/docs.yml b/fern/docs.yml index d24a0660e..3fee1c17b 100644 --- a/fern/docs.yml +++ b/fern/docs.yml @@ -83,10 +83,36 @@ navigation: - page: REST API (other languages) icon: fa-regular fa-network-wired path: 01-guide/02-languages/rest.mdx - - - page: NextJS + - section: Framework Integration + icon: fa-solid fa-plug + contents: + - section: Next.js icon: fa-brands fa-react - path: 01-guide/08-integrations/nextjs.mdx + contents: + # - page: Overview + # icon: fa-regular fa-circle-info + # path: 01-guide/08-integrations/01-nextjs-overview.mdx + - page: App Router Setup + icon: fa-regular fa-route + path: 01-guide/08-integrations/02-nextjs-app-router.mdx + # - page: Pages Router Setup + # icon: fa-regular fa-file-code + # path: 01-guide/08-integrations/03-nextjs-pages-router.mdx + # - page: React Server Components + # icon: fa-regular fa-server + # path: 01-guide/08-integrations/04-nextjs-rsc.mdx + # - page: Streaming + # icon: fa-regular fa-faucet + # path: 01-guide/08-integrations/05-nextjs-streaming.mdx + # - page: Environment Setup + # icon: fa-regular fa-gear + # path: 01-guide/08-integrations/06-nextjs-environment.mdx + # - page: Deployment + # icon: fa-regular fa-rocket + # path: 01-guide/08-integrations/07-nextjs-deployment.mdx + # - page: Examples + # icon: fa-regular fa-code + # path: 01-guide/08-integrations/08-nextjs-examples.mdx - section: Development contents: - page: Environment Variables @@ -289,6 +315,44 @@ navigation: # - page: PHP # icon: fa-brands fa-php # path: 01-guide/introduction.mdx + # - page: b + # path: 01-guide/introduction.mdx + # - page: async_client + # path: 01-guide/introduction.mdx + # - page: sync_client + # path: 01-guide/introduction.mdx + # - page: reset_baml_env_vars + # path: 01-guide/introduction.mdx + # - page: trace + # path: 01-guide/introduction.mdx + # - page: set_tags + # path: 01-guide/introduction.mdx + # - section: "baml_client: Typescript" + # contents: + # - page: TypeBuilder + # path: 01-guide/introduction.mdx + # - page: ClientRegistry + # path: 01-guide/introduction.mdx + # - page: BamlError + # path: 01-guide/introduction.mdx + # - page: BamlImageTs + # path: 01-guide/introduction.mdx + # - page: BamlAudioTs + # path: 01-guide/introduction.mdx + # - page: b + # path: 01-guide/introduction.mdx + # - page: async_client + # path: 01-guide/introduction.mdx + # - page: sync_client + # path: 01-guide/introduction.mdx + # - page: resetBamlEnvVars + # path: 01-guide/introduction.mdx + # - page: trace_async + # path: 01-guide/introduction.mdx + # - page: trace_sync + # path: 01-guide/introduction.mdx + # - page: set_tags + # path: 01-guide/introduction.mdx - tab: reference layout: # - page: Changelog diff --git a/fern/package.json b/fern/package.json index 6de00bfa2..017d24c7b 100644 --- a/fern/package.json +++ b/fern/package.json @@ -5,5 +5,6 @@ }, "devDependencies": { "fern-api": "^0.31.24" - } + }, + "packageManager": "pnpm@9.12.0" } diff --git a/fern/snippets/baml/cli/generate.mdx b/fern/snippets/baml/cli/generate.mdx new file mode 100644 index 000000000..bd56bd10b --- /dev/null +++ b/fern/snippets/baml/cli/generate.mdx @@ -0,0 +1,13 @@ + +```bash npm +npx baml-cli generate +``` + +```bash pnpm +pnpm exec baml-cli generate +``` + +```bash yarn +yarn baml-cli generate +``` + \ No newline at end of file diff --git a/fern/snippets/baml/cli/install/nodejs.mdx b/fern/snippets/baml/cli/install/nodejs.mdx new file mode 100644 index 000000000..625ba2aac --- /dev/null +++ b/fern/snippets/baml/cli/install/nodejs.mdx @@ -0,0 +1,13 @@ + +```bash npm +npx baml-cli init +``` + +```bash pnpm +pnpm exec baml-cli init +``` + +```bash yarn +yarn baml-cli init +``` + \ No newline at end of file diff --git a/fern/snippets/baml/clients/openai.mdx b/fern/snippets/baml/clients/openai.mdx new file mode 100644 index 000000000..1b5f78698 --- /dev/null +++ b/fern/snippets/baml/clients/openai.mdx @@ -0,0 +1,9 @@ +```baml title="baml_src/clients.baml" +client OpenAI { + provider openai + options { + model gpt-4o + api_key env.OPENAI_API_KEY + } +} +``` diff --git a/fern/snippets/baml/prompts/story.mdx b/fern/snippets/baml/prompts/story.mdx new file mode 100644 index 000000000..36b379615 --- /dev/null +++ b/fern/snippets/baml/prompts/story.mdx @@ -0,0 +1,26 @@ +```baml title="baml_src/story.baml" focus={1-16} +class Story { + title: string + content: string +} + +function WriteMeAStory(prompt: string) -> Story { + client OpenAI + prompt #" + Act as a storyteller. + + { ctx.output_format } + + { _.role('user') } + Once upon a time {prompt} + "# +} + +test WriteMeAStory { + functions [WriteMeAStory] + args { + prompt "The Universe" + } + +} +``` \ No newline at end of file diff --git a/fern/snippets/frameworks/nextjs/baml-generator.mdx b/fern/snippets/frameworks/nextjs/baml-generator.mdx new file mode 100644 index 000000000..78dfcdf2e --- /dev/null +++ b/fern/snippets/frameworks/nextjs/baml-generator.mdx @@ -0,0 +1,7 @@ +```baml title="baml_src/generators.baml" +generator typescript { + output_type "typescript/react" + output_dir ".." + version "latest" +} +``` diff --git a/fern/snippets/frameworks/nextjs/custom-client-hook.mdx b/fern/snippets/frameworks/nextjs/custom-client-hook.mdx new file mode 100644 index 000000000..68a70751a --- /dev/null +++ b/fern/snippets/frameworks/nextjs/custom-client-hook.mdx @@ -0,0 +1,53 @@ + +```tsx title="app/components/story-form.tsx" {3, 7-14} +'use client' + +import { writeMeAStoryAction } from "@/actions/story"; +import type { Story } from "@/baml_client/types"; + +export function StoryForm() { + const { + data: finalStory, + partialData: streamingStory, + isLoading, + isError, + error, + mutate + } = useBamlStream(writeMeAStoryAction); + + const story = finalStory ?? streamingStory; // Typesafe: Story | undefined + const title = story?.title; // Typesafe: string | undefined + const content = story?.content; // Typesafe: string | undefined + + return ( +
+
{ + const formData = new FormData(e.currentTarget as HTMLFormElement); + + mutate(formData.get('prompt') as string); + }} + > + + +
+ +
+

{streamingStory ? "Streaming Response:" : "Final Response:"}

+

{story?.title}

+
+            {story?.content}
+          
+
+ + {isError && ( +
+ Error: {error?.message} +
+ )} +
+ ); +} +``` \ No newline at end of file diff --git a/fern/snippets/frameworks/nextjs/custom-server-action.mdx b/fern/snippets/frameworks/nextjs/custom-server-action.mdx new file mode 100644 index 000000000..56edd828d --- /dev/null +++ b/fern/snippets/frameworks/nextjs/custom-server-action.mdx @@ -0,0 +1,17 @@ +```ts title="app/actions/story.ts" {5} +'use server' + +import { b } from "@/baml_client"; + +// Custom Server Action +export async function writeMeAStoryAction(prompt: string) { + // You can add any server logic here, like auth, validation, rate limiting, etc. + const auth = await auth(); + + if (!auth) { + throw new Error("Unauthorized"); + } + + return b.stream.WriteMeAStory(prompt).toStreamable(); +} +``` \ No newline at end of file diff --git a/fern/snippets/frameworks/nextjs/env-vars/openai.mdx b/fern/snippets/frameworks/nextjs/env-vars/openai.mdx new file mode 100644 index 000000000..4d0481873 --- /dev/null +++ b/fern/snippets/frameworks/nextjs/env-vars/openai.mdx @@ -0,0 +1,18 @@ +Setup provider specific API Keys. + +```.env .env.local +OPENAI_API_KEY=sk-... +``` + + +To enable observability with BAML, you'll first need to sign up for a [Boundary Studio](https://app.boundaryml.com) account. + + +```.env .env.local +BOUNDARY_PROJECT_ID=sk-... +BOUNDARY_SECRET=sk-... + +OPENAI_API_KEY=sk-... +``` + + \ No newline at end of file diff --git a/fern/snippets/frameworks/nextjs/generated-client-hook.mdx b/fern/snippets/frameworks/nextjs/generated-client-hook.mdx new file mode 100644 index 000000000..deeaae41c --- /dev/null +++ b/fern/snippets/frameworks/nextjs/generated-client-hook.mdx @@ -0,0 +1,54 @@ + +```tsx title="app/components/story-form.tsx" {3, 7-15} +'use client' + +import { useWriteMeAStoryAction } from "@/baml_client/nextjs"; +import type { Story } from "@/baml_client/types"; + +export function StoryForm() { + // Generated hook from BAML Function WriteMeAStory + const { + data: finalStory, + partialData: streamingStory, + isLoading, + isError, + error, + mutate + } = useWriteMeAStoryAction(); + + const story = isLoading ? streamingStory : finalStory; // Typesafe: Story | undefined + const title = story?.title; // Typesafe: string | undefined + const content = story?.content; // Typesafe: string | undefined + + return ( +
+
{ + const formData = new FormData(e.currentTarget as HTMLFormElement); + + mutate(formData.get('prompt') as string); + }} + > + + +
+ +
+

{streamingStory ? "Streaming Response:" : "Final Response:"}

+

{story?.title}

+
+            {story?.content}
+          
+
+ + {isError && ( +
+ Error: {error?.message} +
+ )} +
+ ); +} +``` \ No newline at end of file diff --git a/fern/snippets/frameworks/nextjs/install-baml.mdx b/fern/snippets/frameworks/nextjs/install-baml.mdx new file mode 100644 index 000000000..4b8a60037 --- /dev/null +++ b/fern/snippets/frameworks/nextjs/install-baml.mdx @@ -0,0 +1,19 @@ + +```bash npm +npm install @boundaryml/baml +npm install @boundaryml/nextjs +npm install @boundaryml/react +``` + +```bash pnpm +pnpm add @boundaryml/baml +pnpm add @boundaryml/nextjs +pnpm add @boundaryml/react +``` + +```bash yarn +yarn add @boundaryml/baml +yarn add @boundaryml/nextjs +yarn add @boundaryml/react +``` + diff --git a/fern/snippets/frameworks/nextjs/next-config.mdx b/fern/snippets/frameworks/nextjs/next-config.mdx new file mode 100644 index 000000000..116cb9735 --- /dev/null +++ b/fern/snippets/frameworks/nextjs/next-config.mdx @@ -0,0 +1,34 @@ + +```typescript title="next.config.ts" {1,8} +import { withBaml } from '@boundaryml/nextjs'; +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + // ... existing config +}; + +export default withBaml()(nextConfig); +``` + +```javascript title="next.config.mjs" {1,8} +import { withBaml } from '@boundaryml/nextjs'; +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + // ... existing config +}; + +export default withBaml()(nextConfig); +``` + +```javascript title="next.config.js" {1,8} +const { withBaml } = require('@boundaryml/nextjs'); + +/** @type {import('next').NextConfig} */ +const nextConfig = { + // ... existing config +} + +module.exports = withBaml()(nextConfig) +``` + diff --git a/integ-tests/README.md b/integ-tests/README.md index e2e9c0a61..20784d379 100644 --- a/integ-tests/README.md +++ b/integ-tests/README.md @@ -172,7 +172,13 @@ b. **Using .env File (Recommended for open source contributors)** ```bash # Build the debug version of the client cd typescript && pnpm run build:debug + ``` + + + For local development, use `pnpm run build:debug` which is much faster. The full `pnpm run build` can take several minutes as it creates an optimized production build. + + ```bash # Generate the test code pnpm run generate diff --git a/integ-tests/baml_src/generators.baml b/integ-tests/baml_src/generators.baml index bf14e8dac..cc4651eb9 100644 --- a/integ-tests/baml_src/generators.baml +++ b/integ-tests/baml_src/generators.baml @@ -10,15 +10,21 @@ generator lang_typescript { version "0.74.0" } +generator lang_typescript_react { + output_type typescript/react + output_dir "../react" + version "0.74.0" +} + generator lang_ruby { output_type ruby/sorbet output_dir "../ruby" version "0.74.0" } -// generator openapi { -// output_type rest/openapi -// output_dir "../openapi" -// version "0.74.0" -// on_generate "rm .gitignore" -// } +generator openapi { + output_type rest/openapi + output_dir "../openapi" + version "0.74.0" + on_generate "rm .gitignore" +} \ No newline at end of file diff --git a/integ-tests/baml_src/test-files/providers/aws.baml b/integ-tests/baml_src/test-files/providers/aws.baml index 5428a2d40..33decfaaf 100644 --- a/integ-tests/baml_src/test-files/providers/aws.baml +++ b/integ-tests/baml_src/test-files/providers/aws.baml @@ -5,6 +5,32 @@ function TestAws(input: string) -> string { "# } +/// my docs +class UniverseQuestion { + question string + answer string +} + +class UniverseQuestionInput { + question string +} + +function TestUniverseQuestion(question: UniverseQuestionInput) -> UniverseQuestion { + client AwsBedrock + prompt #" + You are a helpful assistant that answers questions about the universe. + + {{ ctx.output_format }} + + {{ _.role("user")}} + + Question: {{ question }} + + Answer: + "# +} + + function TestAwsInvalidRegion(input: string) -> string { client AwsBedrockInvalidRegion prompt #" diff --git a/integ-tests/openapi/baml_client/openapi.yaml b/integ-tests/openapi/baml_client/openapi.yaml index 526fda7e3..9d36825b8 100644 --- a/integ-tests/openapi/baml_client/openapi.yaml +++ b/integ-tests/openapi/baml_client/openapi.yaml @@ -32,6 +32,47 @@ paths: title: AaaSamOutputFormatResponse $ref: '#/components/schemas/Recipe' operationId: AaaSamOutputFormat + /call/AliasThatPointsToRecursiveType: + post: + requestBody: + $ref: '#/components/requestBodies/AliasThatPointsToRecursiveType' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: AliasThatPointsToRecursiveTypeResponse + $ref: '#/components/schemas/LinkedListAliasNode' + operationId: AliasThatPointsToRecursiveType + /call/AliasWithMultipleAttrs: + post: + requestBody: + $ref: '#/components/requestBodies/AliasWithMultipleAttrs' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: AliasWithMultipleAttrsResponse + type: object + properties: + value: + type: integer + checks: + type: object + properties: + gt_ten: + $ref: '#components/schemas/Check' + required: + - gt_ten + additionalProperties: false + required: + - value + - checks + additionalProperties: false + operationId: AliasWithMultipleAttrs /call/AliasedInputClass: post: requestBody: @@ -97,6 +138,32 @@ paths: title: AliasedInputListResponse type: string operationId: AliasedInputList + /call/AllowedOptionals: + post: + requestBody: + $ref: '#/components/requestBodies/AllowedOptionals' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: AllowedOptionalsResponse + $ref: '#/components/schemas/OptionalListAndMap' + operationId: AllowedOptionals + /call/AssertFn: + post: + requestBody: + $ref: '#/components/requestBodies/AssertFn' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: AssertFnResponse + type: integer + operationId: AssertFn /call/AudioInput: post: requestBody: @@ -110,6 +177,45 @@ paths: title: AudioInputResponse type: string operationId: AudioInput + /call/BuildLinkedList: + post: + requestBody: + $ref: '#/components/requestBodies/BuildLinkedList' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: BuildLinkedListResponse + $ref: '#/components/schemas/LinkedList' + operationId: BuildLinkedList + /call/BuildTree: + post: + requestBody: + $ref: '#/components/requestBodies/BuildTree' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: BuildTreeResponse + $ref: '#/components/schemas/Tree' + operationId: BuildTree + /call/ClassThatPointsToRecursiveClassThroughAlias: + post: + requestBody: + $ref: '#/components/requestBodies/ClassThatPointsToRecursiveClassThroughAlias' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: ClassThatPointsToRecursiveClassThroughAliasResponse + $ref: '#/components/schemas/ClassToRecAlias' + operationId: ClassThatPointsToRecursiveClassThroughAlias /call/ClassifyDynEnumTwo: post: requestBody: @@ -162,6 +268,19 @@ paths: title: ClassifyMessage3Response $ref: '#/components/schemas/Category' operationId: ClassifyMessage3 + /call/Completion: + post: + requestBody: + $ref: '#/components/requestBodies/Completion' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: CompletionResponse + type: string + operationId: Completion /call/CustomTask: post: requestBody: @@ -325,6 +444,21 @@ paths: title: ExtractContactInfoResponse $ref: '#/components/schemas/ContactInfo' operationId: ExtractContactInfo + /call/ExtractHobby: + post: + requestBody: + $ref: '#/components/requestBodies/ExtractHobby' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: ExtractHobbyResponse + type: array + items: + $ref: '#/components/schemas/Hobby' + operationId: ExtractHobby /call/ExtractNames: post: requestBody: @@ -448,6 +582,34 @@ paths: title: FnEnumOutputResponse $ref: '#/components/schemas/EnumOutput' operationId: FnEnumOutput + /call/FnLiteralClassInputOutput: + post: + requestBody: + $ref: '#/components/requestBodies/FnLiteralClassInputOutput' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnLiteralClassInputOutputResponse + $ref: '#/components/schemas/LiteralClassHello' + operationId: FnLiteralClassInputOutput + /call/FnLiteralUnionClassInputOutput: + post: + requestBody: + $ref: '#/components/requestBodies/FnLiteralUnionClassInputOutput' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnLiteralUnionClassInputOutputResponse + oneOf: + - $ref: '#/components/schemas/LiteralClassOne' + - $ref: '#/components/schemas/LiteralClassTwo' + operationId: FnLiteralUnionClassInputOutput /call/FnNamedArgsSingleStringOptional: post: requestBody: @@ -528,6 +690,58 @@ paths: title: FnOutputClassWithEnumResponse $ref: '#/components/schemas/TestClassWithEnum' operationId: FnOutputClassWithEnum + /call/FnOutputInt: + post: + requestBody: + $ref: '#/components/requestBodies/FnOutputInt' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnOutputIntResponse + type: integer + operationId: FnOutputInt + /call/FnOutputLiteralBool: + post: + requestBody: + $ref: '#/components/requestBodies/FnOutputLiteralBool' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnOutputLiteralBoolResponse + type: boolean + operationId: FnOutputLiteralBool + /call/FnOutputLiteralInt: + post: + requestBody: + $ref: '#/components/requestBodies/FnOutputLiteralInt' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnOutputLiteralIntResponse + type: integer + operationId: FnOutputLiteralInt + /call/FnOutputLiteralString: + post: + requestBody: + $ref: '#/components/requestBodies/FnOutputLiteralString' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: FnOutputLiteralStringResponse + type: string + operationId: FnOutputLiteralString /call/FnOutputStringList: post: requestBody: @@ -621,836 +835,2429 @@ paths: title: GetQueryResponse $ref: '#/components/schemas/SearchParams' operationId: GetQuery - /call/MyFunc: + /call/InOutEnumMapKey: post: requestBody: - $ref: '#/components/requestBodies/MyFunc' + $ref: '#/components/requestBodies/InOutEnumMapKey' responses: '200': description: Successful operation content: application/json: schema: - title: MyFuncResponse - $ref: '#/components/schemas/DynamicOutput' - operationId: MyFunc - /call/OptionalTest_Function: + title: InOutEnumMapKeyResponse + type: object + additionalProperties: + type: string + operationId: InOutEnumMapKey + /call/InOutLiteralStringUnionMapKey: post: requestBody: - $ref: '#/components/requestBodies/OptionalTest_Function' + $ref: '#/components/requestBodies/InOutLiteralStringUnionMapKey' responses: '200': description: Successful operation content: application/json: schema: - title: OptionalTest_FunctionResponse - type: array - items: - $ref: '#/components/schemas/OptionalTest_ReturnType' - operationId: OptionalTest_Function - /call/PredictAge: + title: InOutLiteralStringUnionMapKeyResponse + type: object + additionalProperties: + type: string + operationId: InOutLiteralStringUnionMapKey + /call/InOutSingleLiteralStringMapKey: post: requestBody: - $ref: '#/components/requestBodies/PredictAge' + $ref: '#/components/requestBodies/InOutSingleLiteralStringMapKey' responses: '200': description: Successful operation content: application/json: schema: - title: PredictAgeResponse - $ref: '#/components/schemas/FooAny' - operationId: PredictAge - /call/PredictAgeBare: + title: InOutSingleLiteralStringMapKeyResponse + type: object + additionalProperties: + type: string + operationId: InOutSingleLiteralStringMapKey + /call/JsonTypeAliasCycle: post: requestBody: - $ref: '#/components/requestBodies/PredictAgeBare' + $ref: '#/components/requestBodies/JsonTypeAliasCycle' responses: '200': description: Successful operation content: application/json: schema: - title: PredictAgeBareResponse + title: JsonTypeAliasCycleResponse + anyOf: [] + operationId: JsonTypeAliasCycle + /call/LiteralUnionsTest: + post: + requestBody: + $ref: '#/components/requestBodies/LiteralUnionsTest' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: LiteralUnionsTestResponse + oneOf: + - type: integer + - type: boolean + - type: string + operationId: LiteralUnionsTest + /call/MakeBlockConstraint: + post: + requestBody: + $ref: '#/components/requestBodies/MakeBlockConstraint' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: MakeBlockConstraintResponse type: object properties: value: - type: integer + $ref: '#/components/schemas/BlockConstraint' checks: type: object properties: - too_big: + cross_field: $ref: '#components/schemas/Check' required: - - too_big + - cross_field additionalProperties: false required: - value - checks additionalProperties: false - operationId: PredictAgeBare - /call/PromptTestClaude: + operationId: MakeBlockConstraint + /call/MakeNestedBlockConstraint: post: requestBody: - $ref: '#/components/requestBodies/PromptTestClaude' + $ref: '#/components/requestBodies/MakeNestedBlockConstraint' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestClaudeResponse - type: string - operationId: PromptTestClaude - /call/PromptTestClaudeChat: + title: MakeNestedBlockConstraintResponse + $ref: '#/components/schemas/NestedBlockConstraint' + operationId: MakeNestedBlockConstraint + /call/MakeSemanticContainer: post: requestBody: - $ref: '#/components/requestBodies/PromptTestClaudeChat' + $ref: '#/components/requestBodies/MakeSemanticContainer' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestClaudeChatResponse - type: string - operationId: PromptTestClaudeChat - /call/PromptTestClaudeChatNoSystem: + title: MakeSemanticContainerResponse + $ref: '#/components/schemas/SemanticContainer' + operationId: MakeSemanticContainer + /call/MapAlias: post: requestBody: - $ref: '#/components/requestBodies/PromptTestClaudeChatNoSystem' + $ref: '#/components/requestBodies/MapAlias' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestClaudeChatNoSystemResponse - type: string - operationId: PromptTestClaudeChatNoSystem - /call/PromptTestOpenAI: + title: MapAliasResponse + type: object + additionalProperties: + type: array + items: + type: string + operationId: MapAlias + /call/MergeAliasAttributes: post: requestBody: - $ref: '#/components/requestBodies/PromptTestOpenAI' + $ref: '#/components/requestBodies/MergeAliasAttributes' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestOpenAIResponse - type: string - operationId: PromptTestOpenAI - /call/PromptTestOpenAIChat: + title: MergeAliasAttributesResponse + $ref: '#/components/schemas/MergeAttrs' + operationId: MergeAliasAttributes + /call/MyFunc: post: requestBody: - $ref: '#/components/requestBodies/PromptTestOpenAIChat' + $ref: '#/components/requestBodies/MyFunc' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestOpenAIChatResponse - type: string - operationId: PromptTestOpenAIChat - /call/PromptTestOpenAIChatNoSystem: + title: MyFuncResponse + $ref: '#/components/schemas/DynamicOutput' + operationId: MyFunc + /call/NestedAlias: post: requestBody: - $ref: '#/components/requestBodies/PromptTestOpenAIChatNoSystem' + $ref: '#/components/requestBodies/NestedAlias' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestOpenAIChatNoSystemResponse - type: string - operationId: PromptTestOpenAIChatNoSystem - /call/PromptTestStreaming: + title: NestedAliasResponse + oneOf: + - oneOf: + - type: integer + - type: string + - type: boolean + - type: number + - type: array + items: + type: string + - type: object + additionalProperties: + type: array + items: + type: string + operationId: NestedAlias + /call/NullLiteralClassHello: post: requestBody: - $ref: '#/components/requestBodies/PromptTestStreaming' + $ref: '#/components/requestBodies/NullLiteralClassHello' responses: '200': description: Successful operation content: application/json: schema: - title: PromptTestStreamingResponse - type: string - operationId: PromptTestStreaming - /call/ReturnFailingAssert: + title: NullLiteralClassHelloResponse + $ref: '#/components/schemas/ClassForNullLiteral' + operationId: NullLiteralClassHello + /call/OptionalTest_Function: post: requestBody: - $ref: '#/components/requestBodies/ReturnFailingAssert' + $ref: '#/components/requestBodies/OptionalTest_Function' responses: '200': description: Successful operation content: application/json: schema: - title: ReturnFailingAssertResponse - type: integer - operationId: ReturnFailingAssert - /call/ReturnMalformedConstraints: - post: - requestBody: - $ref: '#/components/requestBodies/ReturnMalformedConstraints' - responses: - '200': - description: Successful operation - content: - application/json: - schema: - title: ReturnMalformedConstraintsResponse - $ref: '#/components/schemas/MalformedConstraints' - operationId: ReturnMalformedConstraints - /call/SchemaDescriptions: + title: OptionalTest_FunctionResponse + type: array + items: + $ref: '#/components/schemas/OptionalTest_ReturnType' + operationId: OptionalTest_Function + /call/PredictAge: post: requestBody: - $ref: '#/components/requestBodies/SchemaDescriptions' + $ref: '#/components/requestBodies/PredictAge' responses: '200': description: Successful operation content: application/json: schema: - title: SchemaDescriptionsResponse - $ref: '#/components/schemas/Schema' - operationId: SchemaDescriptions - /call/StreamBigNumbers: + title: PredictAgeResponse + $ref: '#/components/schemas/FooAny' + operationId: PredictAge + /call/PredictAgeBare: post: requestBody: - $ref: '#/components/requestBodies/StreamBigNumbers' + $ref: '#/components/requestBodies/PredictAgeBare' responses: '200': description: Successful operation content: application/json: schema: - title: StreamBigNumbersResponse - $ref: '#/components/schemas/BigNumbers' - operationId: StreamBigNumbers - /call/StreamFailingAssertion: + title: PredictAgeBareResponse + type: object + properties: + value: + type: integer + checks: + type: object + properties: + too_big: + $ref: '#components/schemas/Check' + required: + - too_big + additionalProperties: false + required: + - value + - checks + additionalProperties: false + operationId: PredictAgeBare + /call/PrimitiveAlias: post: requestBody: - $ref: '#/components/requestBodies/StreamFailingAssertion' + $ref: '#/components/requestBodies/PrimitiveAlias' responses: '200': description: Successful operation content: application/json: schema: - title: StreamFailingAssertionResponse - $ref: '#/components/schemas/TwoStoriesOneTitle' - operationId: StreamFailingAssertion - /call/StreamOneBigNumber: + title: PrimitiveAliasResponse + oneOf: + - type: integer + - type: string + - type: boolean + - type: number + operationId: PrimitiveAlias + /call/PromptTestClaude: post: requestBody: - $ref: '#/components/requestBodies/StreamOneBigNumber' + $ref: '#/components/requestBodies/PromptTestClaude' responses: '200': description: Successful operation content: application/json: schema: - title: StreamOneBigNumberResponse - type: integer - operationId: StreamOneBigNumber - /call/StreamUnionIntegers: + title: PromptTestClaudeResponse + type: string + operationId: PromptTestClaude + /call/PromptTestClaudeChat: post: requestBody: - $ref: '#/components/requestBodies/StreamUnionIntegers' + $ref: '#/components/requestBodies/PromptTestClaudeChat' responses: '200': description: Successful operation content: application/json: schema: - title: StreamUnionIntegersResponse - type: array - items: - oneOf: - - type: integer - - type: string - operationId: StreamUnionIntegers - /call/StreamingCompoundNumbers: + title: PromptTestClaudeChatResponse + type: string + operationId: PromptTestClaudeChat + /call/PromptTestClaudeChatNoSystem: post: requestBody: - $ref: '#/components/requestBodies/StreamingCompoundNumbers' + $ref: '#/components/requestBodies/PromptTestClaudeChatNoSystem' responses: '200': description: Successful operation content: application/json: schema: - title: StreamingCompoundNumbersResponse - $ref: '#/components/schemas/CompoundBigNumbers' - operationId: StreamingCompoundNumbers - /call/TestAnthropic: + title: PromptTestClaudeChatNoSystemResponse + type: string + operationId: PromptTestClaudeChatNoSystem + /call/PromptTestOpenAI: post: requestBody: - $ref: '#/components/requestBodies/TestAnthropic' + $ref: '#/components/requestBodies/PromptTestOpenAI' responses: '200': description: Successful operation content: application/json: schema: - title: TestAnthropicResponse + title: PromptTestOpenAIResponse type: string - operationId: TestAnthropic - /call/TestAnthropicShorthand: + operationId: PromptTestOpenAI + /call/PromptTestOpenAIChat: post: requestBody: - $ref: '#/components/requestBodies/TestAnthropicShorthand' + $ref: '#/components/requestBodies/PromptTestOpenAIChat' responses: '200': description: Successful operation content: application/json: schema: - title: TestAnthropicShorthandResponse + title: PromptTestOpenAIChatResponse type: string - operationId: TestAnthropicShorthand - /call/TestAws: + operationId: PromptTestOpenAIChat + /call/PromptTestOpenAIChatNoSystem: post: requestBody: - $ref: '#/components/requestBodies/TestAws' + $ref: '#/components/requestBodies/PromptTestOpenAIChatNoSystem' responses: '200': description: Successful operation content: application/json: schema: - title: TestAwsResponse + title: PromptTestOpenAIChatNoSystemResponse type: string - operationId: TestAws - /call/TestAzure: + operationId: PromptTestOpenAIChatNoSystem + /call/PromptTestStreaming: post: requestBody: - $ref: '#/components/requestBodies/TestAzure' + $ref: '#/components/requestBodies/PromptTestStreaming' responses: '200': description: Successful operation content: application/json: schema: - title: TestAzureResponse + title: PromptTestStreamingResponse type: string - operationId: TestAzure - /call/TestCaching: + operationId: PromptTestStreaming + /call/RecursiveAliasCycle: post: requestBody: - $ref: '#/components/requestBodies/TestCaching' + $ref: '#/components/requestBodies/RecursiveAliasCycle' responses: '200': description: Successful operation content: application/json: schema: - title: TestCachingResponse - type: string - operationId: TestCaching - /call/TestFallbackClient: + title: RecursiveAliasCycleResponse + anyOf: [] + operationId: RecursiveAliasCycle + /call/RecursiveClassWithAliasIndirection: post: requestBody: - $ref: '#/components/requestBodies/TestFallbackClient' + $ref: '#/components/requestBodies/RecursiveClassWithAliasIndirection' responses: '200': description: Successful operation content: application/json: schema: - title: TestFallbackClientResponse - type: string - operationId: TestFallbackClient - /call/TestFallbackToShorthand: + title: RecursiveClassWithAliasIndirectionResponse + $ref: '#/components/schemas/NodeWithAliasIndirection' + operationId: RecursiveClassWithAliasIndirection + /call/ReturnAliasWithMergedAttributes: post: requestBody: - $ref: '#/components/requestBodies/TestFallbackToShorthand' + $ref: '#/components/requestBodies/ReturnAliasWithMergedAttributes' responses: '200': description: Successful operation content: application/json: schema: - title: TestFallbackToShorthandResponse - type: string - operationId: TestFallbackToShorthand - /call/TestFnNamedArgsSingleBool: + title: ReturnAliasWithMergedAttributesResponse + type: object + properties: + value: + type: integer + checks: + type: object + properties: + gt_ten: + $ref: '#components/schemas/Check' + required: + - gt_ten + additionalProperties: false + required: + - value + - checks + additionalProperties: false + operationId: ReturnAliasWithMergedAttributes + /call/ReturnFailingAssert: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleBool' + $ref: '#/components/requestBodies/ReturnFailingAssert' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleBoolResponse - type: string - operationId: TestFnNamedArgsSingleBool - /call/TestFnNamedArgsSingleClass: + title: ReturnFailingAssertResponse + type: integer + operationId: ReturnFailingAssert + /call/ReturnMalformedConstraints: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleClass' + $ref: '#/components/requestBodies/ReturnMalformedConstraints' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleClassResponse - type: string - operationId: TestFnNamedArgsSingleClass - /call/TestFnNamedArgsSingleEnumList: + title: ReturnMalformedConstraintsResponse + $ref: '#/components/schemas/MalformedConstraints' + operationId: ReturnMalformedConstraints + /call/SchemaDescriptions: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleEnumList' + $ref: '#/components/requestBodies/SchemaDescriptions' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleEnumListResponse - type: string - operationId: TestFnNamedArgsSingleEnumList - /call/TestFnNamedArgsSingleFloat: + title: SchemaDescriptionsResponse + $ref: '#/components/schemas/Schema' + operationId: SchemaDescriptions + /call/SimpleRecursiveListAlias: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleFloat' + $ref: '#/components/requestBodies/SimpleRecursiveListAlias' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleFloatResponse - type: string - operationId: TestFnNamedArgsSingleFloat - /call/TestFnNamedArgsSingleInt: + title: SimpleRecursiveListAliasResponse + anyOf: [] + operationId: SimpleRecursiveListAlias + /call/SimpleRecursiveMapAlias: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleInt' + $ref: '#/components/requestBodies/SimpleRecursiveMapAlias' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleIntResponse - type: string - operationId: TestFnNamedArgsSingleInt - /call/TestFnNamedArgsSingleMapStringToClass: + title: SimpleRecursiveMapAliasResponse + anyOf: [] + operationId: SimpleRecursiveMapAlias + /call/StreamBigNumbers: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToClass' + $ref: '#/components/requestBodies/StreamBigNumbers' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToClassResponse - type: object - additionalProperties: - $ref: '#/components/schemas/StringToClassEntry' - operationId: TestFnNamedArgsSingleMapStringToClass - /call/TestFnNamedArgsSingleMapStringToMap: + title: StreamBigNumbersResponse + $ref: '#/components/schemas/BigNumbers' + operationId: StreamBigNumbers + /call/StreamFailingAssertion: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToMap' + $ref: '#/components/requestBodies/StreamFailingAssertion' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToMapResponse - type: object - additionalProperties: - type: object - additionalProperties: - type: string - operationId: TestFnNamedArgsSingleMapStringToMap - /call/TestFnNamedArgsSingleMapStringToString: + title: StreamFailingAssertionResponse + $ref: '#/components/schemas/TwoStoriesOneTitle' + operationId: StreamFailingAssertion + /call/StreamOneBigNumber: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToString' + $ref: '#/components/requestBodies/StreamOneBigNumber' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToStringResponse - type: object - additionalProperties: - type: string - operationId: TestFnNamedArgsSingleMapStringToString - /call/TestFnNamedArgsSingleString: + title: StreamOneBigNumberResponse + type: integer + operationId: StreamOneBigNumber + /call/StreamUnionIntegers: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleString' + $ref: '#/components/requestBodies/StreamUnionIntegers' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleStringResponse - type: string - operationId: TestFnNamedArgsSingleString - /call/TestFnNamedArgsSingleStringArray: + title: StreamUnionIntegersResponse + type: array + items: + oneOf: + - type: integer + - type: string + operationId: StreamUnionIntegers + /call/StreamingCompoundNumbers: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleStringArray' + $ref: '#/components/requestBodies/StreamingCompoundNumbers' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleStringArrayResponse - type: string - operationId: TestFnNamedArgsSingleStringArray - /call/TestFnNamedArgsSingleStringList: + title: StreamingCompoundNumbersResponse + $ref: '#/components/schemas/CompoundBigNumbers' + operationId: StreamingCompoundNumbers + /call/TakeRecAliasDep: post: requestBody: - $ref: '#/components/requestBodies/TestFnNamedArgsSingleStringList' + $ref: '#/components/requestBodies/TakeRecAliasDep' responses: '200': description: Successful operation content: application/json: schema: - title: TestFnNamedArgsSingleStringListResponse - type: string - operationId: TestFnNamedArgsSingleStringList - /call/TestGemini: + title: TakeRecAliasDepResponse + $ref: '#/components/schemas/RecursiveAliasDependency' + operationId: TakeRecAliasDep + /call/TestAnthropic: post: requestBody: - $ref: '#/components/requestBodies/TestGemini' + $ref: '#/components/requestBodies/TestAnthropic' responses: '200': description: Successful operation content: application/json: schema: - title: TestGeminiResponse + title: TestAnthropicResponse type: string - operationId: TestGemini - /call/TestImageInput: + operationId: TestAnthropic + /call/TestAnthropicShorthand: post: requestBody: - $ref: '#/components/requestBodies/TestImageInput' + $ref: '#/components/requestBodies/TestAnthropicShorthand' responses: '200': description: Successful operation content: application/json: schema: - title: TestImageInputResponse + title: TestAnthropicShorthandResponse type: string - operationId: TestImageInput - /call/TestImageInputAnthropic: + operationId: TestAnthropicShorthand + /call/TestAws: post: requestBody: - $ref: '#/components/requestBodies/TestImageInputAnthropic' + $ref: '#/components/requestBodies/TestAws' responses: '200': description: Successful operation content: application/json: schema: - title: TestImageInputAnthropicResponse + title: TestAwsResponse type: string - operationId: TestImageInputAnthropic - /call/TestImageListInput: + operationId: TestAws + /call/TestAwsInvalidAccessKey: post: requestBody: - $ref: '#/components/requestBodies/TestImageListInput' + $ref: '#/components/requestBodies/TestAwsInvalidAccessKey' responses: '200': description: Successful operation content: application/json: schema: - title: TestImageListInputResponse + title: TestAwsInvalidAccessKeyResponse type: string - operationId: TestImageListInput - /call/TestMulticlassNamedArgs: + operationId: TestAwsInvalidAccessKey + /call/TestAwsInvalidProfile: post: requestBody: - $ref: '#/components/requestBodies/TestMulticlassNamedArgs' + $ref: '#/components/requestBodies/TestAwsInvalidProfile' responses: '200': description: Successful operation content: application/json: schema: - title: TestMulticlassNamedArgsResponse + title: TestAwsInvalidProfileResponse type: string - operationId: TestMulticlassNamedArgs - /call/TestOllama: + operationId: TestAwsInvalidProfile + /call/TestAwsInvalidRegion: post: requestBody: - $ref: '#/components/requestBodies/TestOllama' + $ref: '#/components/requestBodies/TestAwsInvalidRegion' responses: '200': description: Successful operation content: application/json: schema: - title: TestOllamaResponse + title: TestAwsInvalidRegionResponse type: string - operationId: TestOllama - /call/TestOpenAILegacyProvider: + operationId: TestAwsInvalidRegion + /call/TestAwsInvalidSessionToken: post: requestBody: - $ref: '#/components/requestBodies/TestOpenAILegacyProvider' + $ref: '#/components/requestBodies/TestAwsInvalidSessionToken' responses: '200': description: Successful operation content: application/json: schema: - title: TestOpenAILegacyProviderResponse + title: TestAwsInvalidSessionTokenResponse type: string - operationId: TestOpenAILegacyProvider - /call/TestOpenAIShorthand: + operationId: TestAwsInvalidSessionToken + /call/TestAzure: post: requestBody: - $ref: '#/components/requestBodies/TestOpenAIShorthand' + $ref: '#/components/requestBodies/TestAzure' responses: '200': description: Successful operation content: application/json: schema: - title: TestOpenAIShorthandResponse + title: TestAzureResponse type: string - operationId: TestOpenAIShorthand - /call/TestRetryConstant: + operationId: TestAzure + /call/TestAzureFailure: post: requestBody: - $ref: '#/components/requestBodies/TestRetryConstant' + $ref: '#/components/requestBodies/TestAzureFailure' responses: '200': description: Successful operation content: application/json: schema: - title: TestRetryConstantResponse + title: TestAzureFailureResponse type: string - operationId: TestRetryConstant - /call/TestRetryExponential: + operationId: TestAzureFailure + /call/TestAzureO1NoMaxTokens: post: requestBody: - $ref: '#/components/requestBodies/TestRetryExponential' + $ref: '#/components/requestBodies/TestAzureO1NoMaxTokens' responses: '200': description: Successful operation content: application/json: schema: - title: TestRetryExponentialResponse + title: TestAzureO1NoMaxTokensResponse type: string - operationId: TestRetryExponential - /call/TestSingleFallbackClient: + operationId: TestAzureO1NoMaxTokens + /call/TestAzureO1WithMaxCompletionTokens: post: requestBody: - $ref: '#/components/requestBodies/TestSingleFallbackClient' + $ref: '#/components/requestBodies/TestAzureO1WithMaxCompletionTokens' responses: '200': description: Successful operation content: application/json: schema: - title: TestSingleFallbackClientResponse + title: TestAzureO1WithMaxCompletionTokensResponse type: string - operationId: TestSingleFallbackClient - /call/TestVertex: + operationId: TestAzureO1WithMaxCompletionTokens + /call/TestAzureO1WithMaxTokens: post: requestBody: - $ref: '#/components/requestBodies/TestVertex' + $ref: '#/components/requestBodies/TestAzureO1WithMaxTokens' responses: '200': description: Successful operation content: application/json: schema: - title: TestVertexResponse + title: TestAzureO1WithMaxTokensResponse type: string - operationId: TestVertex - /call/UnionTest_Function: + operationId: TestAzureO1WithMaxTokens + /call/TestAzureWithMaxTokens: post: requestBody: - $ref: '#/components/requestBodies/UnionTest_Function' + $ref: '#/components/requestBodies/TestAzureWithMaxTokens' responses: '200': description: Successful operation content: application/json: schema: - title: UnionTest_FunctionResponse - $ref: '#/components/schemas/UnionTest_ReturnType' - operationId: UnionTest_Function - /call/UseMalformedConstraints: + title: TestAzureWithMaxTokensResponse + type: string + operationId: TestAzureWithMaxTokens + /call/TestCaching: post: requestBody: - $ref: '#/components/requestBodies/UseMalformedConstraints' + $ref: '#/components/requestBodies/TestCaching' responses: '200': description: Successful operation content: application/json: schema: - title: UseMalformedConstraintsResponse - type: integer - operationId: UseMalformedConstraints -components: - requestBodies: - AaaSamOutputFormat: - required: true - content: - application/json: - schema: - title: AaaSamOutputFormatRequest - type: object - properties: - recipe: + title: TestCachingResponse type: string + operationId: TestCaching + /call/TestFallbackClient: + post: + requestBody: + $ref: '#/components/requestBodies/TestFallbackClient' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFallbackClientResponse + type: string + operationId: TestFallbackClient + /call/TestFallbackToShorthand: + post: + requestBody: + $ref: '#/components/requestBodies/TestFallbackToShorthand' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFallbackToShorthandResponse + type: string + operationId: TestFallbackToShorthand + /call/TestFnNamedArgsSingleBool: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleBool' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleBoolResponse + type: string + operationId: TestFnNamedArgsSingleBool + /call/TestFnNamedArgsSingleClass: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleClass' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleClassResponse + type: string + operationId: TestFnNamedArgsSingleClass + /call/TestFnNamedArgsSingleEnumList: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleEnumList' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleEnumListResponse + type: string + operationId: TestFnNamedArgsSingleEnumList + /call/TestFnNamedArgsSingleFloat: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleFloat' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleFloatResponse + type: string + operationId: TestFnNamedArgsSingleFloat + /call/TestFnNamedArgsSingleInt: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleInt' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleIntResponse + type: string + operationId: TestFnNamedArgsSingleInt + /call/TestFnNamedArgsSingleMapStringToClass: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToClass' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleMapStringToClassResponse + type: object + additionalProperties: + $ref: '#/components/schemas/StringToClassEntry' + operationId: TestFnNamedArgsSingleMapStringToClass + /call/TestFnNamedArgsSingleMapStringToMap: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToMap' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleMapStringToMapResponse + type: object + additionalProperties: + type: object + additionalProperties: + type: string + operationId: TestFnNamedArgsSingleMapStringToMap + /call/TestFnNamedArgsSingleMapStringToString: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleMapStringToString' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleMapStringToStringResponse + type: object + additionalProperties: + type: string + operationId: TestFnNamedArgsSingleMapStringToString + /call/TestFnNamedArgsSingleString: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleString' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleStringResponse + type: string + operationId: TestFnNamedArgsSingleString + /call/TestFnNamedArgsSingleStringArray: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleStringArray' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleStringArrayResponse + type: string + operationId: TestFnNamedArgsSingleStringArray + /call/TestFnNamedArgsSingleStringList: + post: + requestBody: + $ref: '#/components/requestBodies/TestFnNamedArgsSingleStringList' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestFnNamedArgsSingleStringListResponse + type: string + operationId: TestFnNamedArgsSingleStringList + /call/TestGemini: + post: + requestBody: + $ref: '#/components/requestBodies/TestGemini' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestGeminiResponse + type: string + operationId: TestGemini + /call/TestGeminiOpenAiGeneric: + post: + requestBody: + $ref: '#/components/requestBodies/TestGeminiOpenAiGeneric' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestGeminiOpenAiGenericResponse + type: string + operationId: TestGeminiOpenAiGeneric + /call/TestGeminiSystem: + post: + requestBody: + $ref: '#/components/requestBodies/TestGeminiSystem' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestGeminiSystemResponse + type: string + operationId: TestGeminiSystem + /call/TestGeminiSystemAsChat: + post: + requestBody: + $ref: '#/components/requestBodies/TestGeminiSystemAsChat' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestGeminiSystemAsChatResponse + type: string + operationId: TestGeminiSystemAsChat + /call/TestImageInput: + post: + requestBody: + $ref: '#/components/requestBodies/TestImageInput' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestImageInputResponse + type: string + operationId: TestImageInput + /call/TestImageInputAnthropic: + post: + requestBody: + $ref: '#/components/requestBodies/TestImageInputAnthropic' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestImageInputAnthropicResponse + type: string + operationId: TestImageInputAnthropic + /call/TestImageListInput: + post: + requestBody: + $ref: '#/components/requestBodies/TestImageListInput' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestImageListInputResponse + type: string + operationId: TestImageListInput + /call/TestMemory: + post: + requestBody: + $ref: '#/components/requestBodies/TestMemory' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestMemoryResponse + $ref: '#/components/schemas/TestMemoryOutput' + operationId: TestMemory + /call/TestMulticlassNamedArgs: + post: + requestBody: + $ref: '#/components/requestBodies/TestMulticlassNamedArgs' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestMulticlassNamedArgsResponse + type: string + operationId: TestMulticlassNamedArgs + /call/TestNamedArgsLiteralBool: + post: + requestBody: + $ref: '#/components/requestBodies/TestNamedArgsLiteralBool' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestNamedArgsLiteralBoolResponse + type: string + operationId: TestNamedArgsLiteralBool + /call/TestNamedArgsLiteralInt: + post: + requestBody: + $ref: '#/components/requestBodies/TestNamedArgsLiteralInt' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestNamedArgsLiteralIntResponse + type: string + operationId: TestNamedArgsLiteralInt + /call/TestNamedArgsLiteralString: + post: + requestBody: + $ref: '#/components/requestBodies/TestNamedArgsLiteralString' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestNamedArgsLiteralStringResponse + type: string + operationId: TestNamedArgsLiteralString + /call/TestOllama: + post: + requestBody: + $ref: '#/components/requestBodies/TestOllama' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOllamaResponse + type: string + operationId: TestOllama + /call/TestOpenAI: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAI' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIResponse + type: string + operationId: TestOpenAI + /call/TestOpenAILegacyProvider: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAILegacyProvider' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAILegacyProviderResponse + type: string + operationId: TestOpenAILegacyProvider + /call/TestOpenAIO1NoMaxTokens: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIO1NoMaxTokens' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIO1NoMaxTokensResponse + type: string + operationId: TestOpenAIO1NoMaxTokens + /call/TestOpenAIO1WithMaxCompletionTokens: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIO1WithMaxCompletionTokens' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIO1WithMaxCompletionTokensResponse + type: string + operationId: TestOpenAIO1WithMaxCompletionTokens + /call/TestOpenAIO1WithMaxTokens: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIO1WithMaxTokens' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIO1WithMaxTokensResponse + type: string + operationId: TestOpenAIO1WithMaxTokens + /call/TestOpenAIShorthand: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIShorthand' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIShorthandResponse + type: string + operationId: TestOpenAIShorthand + /call/TestOpenAIWithMaxTokens: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIWithMaxTokens' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIWithMaxTokensResponse + type: string + operationId: TestOpenAIWithMaxTokens + /call/TestOpenAIWithNullMaxTokens: + post: + requestBody: + $ref: '#/components/requestBodies/TestOpenAIWithNullMaxTokens' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestOpenAIWithNullMaxTokensResponse + type: string + operationId: TestOpenAIWithNullMaxTokens + /call/TestRetryConstant: + post: + requestBody: + $ref: '#/components/requestBodies/TestRetryConstant' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestRetryConstantResponse + type: string + operationId: TestRetryConstant + /call/TestRetryExponential: + post: + requestBody: + $ref: '#/components/requestBodies/TestRetryExponential' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestRetryExponentialResponse + type: string + operationId: TestRetryExponential + /call/TestSingleFallbackClient: + post: + requestBody: + $ref: '#/components/requestBodies/TestSingleFallbackClient' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestSingleFallbackClientResponse + type: string + operationId: TestSingleFallbackClient + /call/TestUniverseQuestion: + post: + requestBody: + $ref: '#/components/requestBodies/TestUniverseQuestion' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestUniverseQuestionResponse + $ref: '#/components/schemas/UniverseQuestion' + operationId: TestUniverseQuestion + /call/TestVertex: + post: + requestBody: + $ref: '#/components/requestBodies/TestVertex' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestVertexResponse + type: string + operationId: TestVertex + /call/TestVertexWithSystemInstructions: + post: + requestBody: + $ref: '#/components/requestBodies/TestVertexWithSystemInstructions' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: TestVertexWithSystemInstructionsResponse + type: string + operationId: TestVertexWithSystemInstructions + /call/UnionTest_Function: + post: + requestBody: + $ref: '#/components/requestBodies/UnionTest_Function' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: UnionTest_FunctionResponse + $ref: '#/components/schemas/UnionTest_ReturnType' + operationId: UnionTest_Function + /call/UseBlockConstraint: + post: + requestBody: + $ref: '#/components/requestBodies/UseBlockConstraint' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: UseBlockConstraintResponse + type: integer + operationId: UseBlockConstraint + /call/UseMalformedConstraints: + post: + requestBody: + $ref: '#/components/requestBodies/UseMalformedConstraints' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: UseMalformedConstraintsResponse + type: integer + operationId: UseMalformedConstraints + /call/UseNestedBlockConstraint: + post: + requestBody: + $ref: '#/components/requestBodies/UseNestedBlockConstraint' + responses: + '200': + description: Successful operation + content: + application/json: + schema: + title: UseNestedBlockConstraintResponse + type: integer + operationId: UseNestedBlockConstraint +components: + requestBodies: + AaaSamOutputFormat: + required: true + content: + application/json: + schema: + title: AaaSamOutputFormatRequest + type: object + properties: + recipe: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - recipe + additionalProperties: false + AliasThatPointsToRecursiveType: + required: true + content: + application/json: + schema: + title: AliasThatPointsToRecursiveTypeRequest + type: object + properties: + list: + $ref: '#/components/schemas/LinkedListAliasNode' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - list + additionalProperties: false + AliasWithMultipleAttrs: + required: true + content: + application/json: + schema: + title: AliasWithMultipleAttrsRequest + type: object + properties: + money: + type: object + properties: + value: + type: integer + checks: + type: object + properties: + gt_ten: + $ref: '#components/schemas/Check' + required: + - gt_ten + additionalProperties: false + required: + - value + - checks + additionalProperties: false + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - money + additionalProperties: false + AliasedInputClass: + required: true + content: + application/json: + schema: + title: AliasedInputClassRequest + type: object + properties: + input: + $ref: '#/components/schemas/InputClass' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + AliasedInputClass2: + required: true + content: + application/json: + schema: + title: AliasedInputClass2Request + type: object + properties: + input: + $ref: '#/components/schemas/InputClass' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + AliasedInputClassNested: + required: true + content: + application/json: + schema: + title: AliasedInputClassNestedRequest + type: object + properties: + input: + $ref: '#/components/schemas/InputClassNested' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + AliasedInputEnum: + required: true + content: + application/json: + schema: + title: AliasedInputEnumRequest + type: object + properties: + input: + $ref: '#/components/schemas/AliasedEnum' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + AliasedInputList: + required: true + content: + application/json: + schema: + title: AliasedInputListRequest + type: object + properties: + input: + type: array + items: + $ref: '#/components/schemas/AliasedEnum' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + AllowedOptionals: + required: true + content: + application/json: + schema: + title: AllowedOptionalsRequest + type: object + properties: + optionals: + $ref: '#/components/schemas/OptionalListAndMap' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - optionals + additionalProperties: false + AssertFn: + required: true + content: + application/json: + schema: + title: AssertFnRequest + type: object + properties: + a: + type: integer + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - a + additionalProperties: false + AudioInput: + required: true + content: + application/json: + schema: + title: AudioInputRequest + type: object + properties: + aud: + $ref: '#/components/schemas/BamlAudio' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - aud + additionalProperties: false + BuildLinkedList: + required: true + content: + application/json: + schema: + title: BuildLinkedListRequest + type: object + properties: + input: + type: array + items: + type: integer + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + BuildTree: + required: true + content: + application/json: + schema: + title: BuildTreeRequest + type: object + properties: + input: + $ref: '#/components/schemas/BinaryNode' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ClassThatPointsToRecursiveClassThroughAlias: + required: true + content: + application/json: + schema: + title: ClassThatPointsToRecursiveClassThroughAliasRequest + type: object + properties: + cls: + $ref: '#/components/schemas/ClassToRecAlias' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - cls + additionalProperties: false + ClassifyDynEnumTwo: + required: true + content: + application/json: + schema: + title: ClassifyDynEnumTwoRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ClassifyMessage: + required: true + content: + application/json: + schema: + title: ClassifyMessageRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ClassifyMessage2: + required: true + content: + application/json: + schema: + title: ClassifyMessage2Request + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ClassifyMessage3: + required: true + content: + application/json: + schema: + title: ClassifyMessage3Request + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + Completion: + required: true + content: + application/json: + schema: + title: CompletionRequest + type: object + properties: + prefix: + type: string + suffix: + type: string + language: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - prefix + - suffix + - language + additionalProperties: false + CustomTask: + required: true + content: + application/json: + schema: + title: CustomTaskRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + DescribeImage: + required: true + content: + application/json: + schema: + title: DescribeImageRequest + type: object + properties: + img: + $ref: '#/components/schemas/BamlImage' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - img + additionalProperties: false + DescribeImage2: + required: true + content: + application/json: + schema: + title: DescribeImage2Request + type: object + properties: + classWithImage: + $ref: '#/components/schemas/ClassWithImage' + img2: + $ref: '#/components/schemas/BamlImage' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - classWithImage + - img2 + additionalProperties: false + DescribeImage3: + required: true + content: + application/json: + schema: + title: DescribeImage3Request + type: object + properties: + classWithImage: + $ref: '#/components/schemas/ClassWithImage' + img2: + $ref: '#/components/schemas/BamlImage' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - classWithImage + - img2 + additionalProperties: false + DescribeImage4: + required: true + content: + application/json: + schema: + title: DescribeImage4Request + type: object + properties: + classWithImage: + $ref: '#/components/schemas/ClassWithImage' + img2: + $ref: '#/components/schemas/BamlImage' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - classWithImage + - img2 + additionalProperties: false + DifferentiateUnions: + required: true + content: + application/json: + schema: + title: DifferentiateUnionsRequest + type: object + properties: + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: [] + additionalProperties: false + DummyOutputFunction: + required: true + content: + application/json: + schema: + title: DummyOutputFunctionRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + DynamicFunc: + required: true + content: + application/json: + schema: + title: DynamicFuncRequest + type: object + properties: + input: + $ref: '#/components/schemas/DynamicClassOne' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + DynamicInputOutput: + required: true + content: + application/json: + schema: + title: DynamicInputOutputRequest + type: object + properties: + input: + $ref: '#/components/schemas/DynInputOutput' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + DynamicListInputOutput: + required: true + content: + application/json: + schema: + title: DynamicListInputOutputRequest + type: object + properties: + input: + type: array + items: + $ref: '#/components/schemas/DynInputOutput' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ExpectFailure: + required: true + content: + application/json: + schema: + title: ExpectFailureRequest + type: object + properties: + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: [] + additionalProperties: false + ExtractContactInfo: + required: true + content: + application/json: + schema: + title: ExtractContactInfoRequest + type: object + properties: + document: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - document + additionalProperties: false + ExtractHobby: + required: true + content: + application/json: + schema: + title: ExtractHobbyRequest + type: object + properties: + text: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - text + additionalProperties: false + ExtractNames: + required: true + content: + application/json: + schema: + title: ExtractNamesRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + ExtractPeople: + required: true + content: + application/json: + schema: + title: ExtractPeopleRequest + type: object + properties: + text: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - text + additionalProperties: false + ExtractReceiptInfo: + required: true + content: + application/json: + schema: + title: ExtractReceiptInfoRequest + type: object + properties: + email: + type: string + reason: + oneOf: + - type: string + - type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - email + - reason + additionalProperties: false + ExtractResume: + required: true + content: + application/json: + schema: + title: ExtractResumeRequest + type: object + properties: + resume: + type: string + img: + $ref: '#/components/schemas/BamlImage' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - resume + additionalProperties: false + ExtractResume2: + required: true + content: + application/json: + schema: + title: ExtractResume2Request + type: object + properties: + resume: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - resume + additionalProperties: false + FnClassOptionalOutput: + required: true + content: + application/json: + schema: + title: FnClassOptionalOutputRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnClassOptionalOutput2: + required: true + content: + application/json: + schema: + title: FnClassOptionalOutput2Request + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnEnumListOutput: + required: true + content: + application/json: + schema: + title: FnEnumListOutputRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnEnumOutput: + required: true + content: + application/json: + schema: + title: FnEnumOutputRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnLiteralClassInputOutput: + required: true + content: + application/json: + schema: + title: FnLiteralClassInputOutputRequest + type: object + properties: + input: + $ref: '#/components/schemas/LiteralClassHello' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnLiteralUnionClassInputOutput: + required: true + content: + application/json: + schema: + title: FnLiteralUnionClassInputOutputRequest + type: object + properties: + input: + oneOf: + - $ref: '#/components/schemas/LiteralClassOne' + - $ref: '#/components/schemas/LiteralClassTwo' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnNamedArgsSingleStringOptional: + required: true + content: + application/json: + schema: + title: FnNamedArgsSingleStringOptionalRequest + type: object + properties: + myString: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: [] + additionalProperties: false + FnOutputBool: + required: true + content: + application/json: + schema: + title: FnOutputBoolRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputClass: + required: true + content: + application/json: + schema: + title: FnOutputClassRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputClassList: + required: true + content: + application/json: + schema: + title: FnOutputClassListRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputClassNested: + required: true + content: + application/json: + schema: + title: FnOutputClassNestedRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputClassWithEnum: + required: true + content: + application/json: + schema: + title: FnOutputClassWithEnumRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputInt: + required: true + content: + application/json: + schema: + title: FnOutputIntRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputLiteralBool: + required: true + content: + application/json: + schema: + title: FnOutputLiteralBoolRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputLiteralInt: + required: true + content: + application/json: + schema: + title: FnOutputLiteralIntRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputLiteralString: + required: true + content: + application/json: + schema: + title: FnOutputLiteralStringRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnOutputStringList: + required: true + content: + application/json: + schema: + title: FnOutputStringListRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnTestAliasedEnumOutput: + required: true + content: + application/json: + schema: + title: FnTestAliasedEnumOutputRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnTestClassAlias: + required: true + content: + application/json: + schema: + title: FnTestClassAliasRequest + type: object + properties: + input: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - input + additionalProperties: false + FnTestNamedArgsSingleEnum: + required: true + content: + application/json: + schema: + title: FnTestNamedArgsSingleEnumRequest + type: object + properties: + myArg: + $ref: '#/components/schemas/NamedArgsSingleEnum' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - myArg + additionalProperties: false + GetDataType: + required: true + content: + application/json: + schema: + title: GetDataTypeRequest + type: object + properties: + text: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - text + additionalProperties: false + GetOrderInfo: + required: true + content: + application/json: + schema: + title: GetOrderInfoRequest + type: object + properties: + email: + $ref: '#/components/schemas/Email' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - email + additionalProperties: false + GetQuery: + required: true + content: + application/json: + schema: + title: GetQueryRequest + type: object + properties: + query: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - query + additionalProperties: false + InOutEnumMapKey: + required: true + content: + application/json: + schema: + title: InOutEnumMapKeyRequest + type: object + properties: + i1: + type: object + additionalProperties: + type: string + i2: + type: object + additionalProperties: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - i1 + - i2 + additionalProperties: false + InOutLiteralStringUnionMapKey: + required: true + content: + application/json: + schema: + title: InOutLiteralStringUnionMapKeyRequest + type: object + properties: + i1: + type: object + additionalProperties: + type: string + i2: + type: object + additionalProperties: + type: string + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - i1 + - i2 + additionalProperties: false + InOutSingleLiteralStringMapKey: + required: true + content: + application/json: + schema: + title: InOutSingleLiteralStringMapKeyRequest + type: object + properties: + m: + type: object + additionalProperties: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - recipe - additionalProperties: false - AliasedInputClass: - required: true - content: - application/json: - schema: - title: AliasedInputClassRequest - type: object - properties: - input: - $ref: '#/components/schemas/InputClass' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - input - additionalProperties: false - AliasedInputClass2: - required: true - content: - application/json: - schema: - title: AliasedInputClass2Request - type: object - properties: - input: - $ref: '#/components/schemas/InputClass' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - input - additionalProperties: false - AliasedInputClassNested: - required: true - content: - application/json: - schema: - title: AliasedInputClassNestedRequest - type: object - properties: - input: - $ref: '#/components/schemas/InputClassNested' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - input - additionalProperties: false - AliasedInputEnum: - required: true - content: - application/json: - schema: - title: AliasedInputEnumRequest - type: object - properties: - input: - $ref: '#/components/schemas/AliasedEnum' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - input - additionalProperties: false - AliasedInputList: - required: true - content: - application/json: - schema: - title: AliasedInputListRequest - type: object - properties: - input: - type: array - items: - $ref: '#/components/schemas/AliasedEnum' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - input - additionalProperties: false - AudioInput: - required: true - content: - application/json: - schema: - title: AudioInputRequest - type: object - properties: - aud: - $ref: '#/components/schemas/BamlAudio' - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - aud + - m additionalProperties: false - ClassifyDynEnumTwo: + JsonTypeAliasCycle: required: true content: application/json: schema: - title: ClassifyDynEnumTwoRequest + title: JsonTypeAliasCycleRequest type: object properties: input: - type: string + anyOf: [] __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input additionalProperties: false - ClassifyMessage: + LiteralUnionsTest: required: true content: application/json: schema: - title: ClassifyMessageRequest + title: LiteralUnionsTestRequest type: object properties: input: @@ -1461,146 +3268,148 @@ components: required: - input additionalProperties: false - ClassifyMessage2: + MakeBlockConstraint: required: true content: application/json: schema: - title: ClassifyMessage2Request + title: MakeBlockConstraintRequest type: object properties: - input: - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: - - input + required: [] additionalProperties: false - ClassifyMessage3: + MakeNestedBlockConstraint: required: true content: application/json: schema: - title: ClassifyMessage3Request + title: MakeNestedBlockConstraintRequest type: object properties: - input: - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: - - input + required: [] additionalProperties: false - CustomTask: + MakeSemanticContainer: required: true content: application/json: schema: - title: CustomTaskRequest + title: MakeSemanticContainerRequest type: object properties: - input: - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: - - input + required: [] additionalProperties: false - DescribeImage: + MapAlias: required: true content: application/json: schema: - title: DescribeImageRequest + title: MapAliasRequest type: object properties: - img: - $ref: '#/components/schemas/BamlImage' + m: + type: object + additionalProperties: + type: array + items: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - img + - m additionalProperties: false - DescribeImage2: + MergeAliasAttributes: required: true content: application/json: schema: - title: DescribeImage2Request + title: MergeAliasAttributesRequest type: object properties: - classWithImage: - $ref: '#/components/schemas/ClassWithImage' - img2: - $ref: '#/components/schemas/BamlImage' + money: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - classWithImage - - img2 + - money additionalProperties: false - DescribeImage3: + MyFunc: required: true content: application/json: schema: - title: DescribeImage3Request + title: MyFuncRequest type: object properties: - classWithImage: - $ref: '#/components/schemas/ClassWithImage' - img2: - $ref: '#/components/schemas/BamlImage' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - classWithImage - - img2 + - input additionalProperties: false - DescribeImage4: + NestedAlias: required: true content: application/json: schema: - title: DescribeImage4Request + title: NestedAliasRequest type: object properties: - classWithImage: - $ref: '#/components/schemas/ClassWithImage' - img2: - $ref: '#/components/schemas/BamlImage' + c: + oneOf: + - oneOf: + - type: integer + - type: string + - type: boolean + - type: number + - type: array + items: + type: string + - type: object + additionalProperties: + type: array + items: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - classWithImage - - img2 + - c additionalProperties: false - DifferentiateUnions: + NullLiteralClassHello: required: true content: application/json: schema: - title: DifferentiateUnionsRequest + title: NullLiteralClassHelloRequest type: object properties: + s: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: [] + required: + - s additionalProperties: false - DummyOutputFunction: + OptionalTest_Function: required: true content: application/json: schema: - title: DummyOutputFunctionRequest + title: OptionalTest_FunctionRequest type: object properties: input: @@ -1611,91 +3420,96 @@ components: required: - input additionalProperties: false - DynamicFunc: + PredictAge: required: true content: application/json: schema: - title: DynamicFuncRequest + title: PredictAgeRequest type: object properties: - input: - $ref: '#/components/schemas/DynamicClassOne' + name: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - name additionalProperties: false - DynamicInputOutput: + PredictAgeBare: required: true content: application/json: schema: - title: DynamicInputOutputRequest + title: PredictAgeBareRequest type: object properties: - input: - $ref: '#/components/schemas/DynInputOutput' + inp: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - inp additionalProperties: false - DynamicListInputOutput: + PrimitiveAlias: required: true content: application/json: schema: - title: DynamicListInputOutputRequest + title: PrimitiveAliasRequest type: object properties: - input: - type: array - items: - $ref: '#/components/schemas/DynInputOutput' + p: + oneOf: + - type: integer + - type: string + - type: boolean + - type: number __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - p additionalProperties: false - ExpectFailure: + PromptTestClaude: required: true content: application/json: schema: - title: ExpectFailureRequest + title: PromptTestClaudeRequest type: object properties: + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: [] + required: + - input additionalProperties: false - ExtractContactInfo: + PromptTestClaudeChat: required: true content: application/json: schema: - title: ExtractContactInfoRequest + title: PromptTestClaudeChatRequest type: object properties: - document: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - document + - input additionalProperties: false - ExtractNames: + PromptTestClaudeChatNoSystem: required: true content: application/json: schema: - title: ExtractNamesRequest + title: PromptTestClaudeChatNoSystemRequest type: object properties: input: @@ -1706,162 +3520,171 @@ components: required: - input additionalProperties: false - ExtractPeople: + PromptTestOpenAI: required: true content: application/json: schema: - title: ExtractPeopleRequest + title: PromptTestOpenAIRequest type: object properties: - text: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - text + - input additionalProperties: false - ExtractReceiptInfo: + PromptTestOpenAIChat: required: true content: application/json: schema: - title: ExtractReceiptInfoRequest + title: PromptTestOpenAIChatRequest type: object properties: - email: + input: type: string - reason: - oneOf: - - type: string - - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - email - - reason + - input additionalProperties: false - ExtractResume: + PromptTestOpenAIChatNoSystem: required: true content: application/json: schema: - title: ExtractResumeRequest + title: PromptTestOpenAIChatNoSystemRequest type: object properties: - resume: + input: type: string - img: - $ref: '#/components/schemas/BamlImage' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - resume + - input additionalProperties: false - ExtractResume2: + PromptTestStreaming: required: true content: application/json: schema: - title: ExtractResume2Request + title: PromptTestStreamingRequest type: object properties: - resume: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - resume + - input additionalProperties: false - FnClassOptionalOutput: + RecursiveAliasCycle: required: true content: application/json: schema: - title: FnClassOptionalOutputRequest + title: RecursiveAliasCycleRequest type: object properties: input: - type: string + anyOf: [] __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input additionalProperties: false - FnClassOptionalOutput2: + RecursiveClassWithAliasIndirection: required: true content: application/json: schema: - title: FnClassOptionalOutput2Request + title: RecursiveClassWithAliasIndirectionRequest type: object properties: - input: - type: string + cls: + $ref: '#/components/schemas/NodeWithAliasIndirection' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - cls additionalProperties: false - FnEnumListOutput: + ReturnAliasWithMergedAttributes: required: true content: application/json: schema: - title: FnEnumListOutputRequest + title: ReturnAliasWithMergedAttributesRequest type: object properties: - input: - type: string + money: + type: object + properties: + value: + type: integer + checks: + type: object + properties: + gt_ten: + $ref: '#components/schemas/Check' + required: + - gt_ten + additionalProperties: false + required: + - value + - checks + additionalProperties: false __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - money additionalProperties: false - FnEnumOutput: + ReturnFailingAssert: required: true content: application/json: schema: - title: FnEnumOutputRequest + title: ReturnFailingAssertRequest type: object properties: - input: - type: string + inp: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - inp additionalProperties: false - FnNamedArgsSingleStringOptional: + ReturnMalformedConstraints: required: true content: application/json: schema: - title: FnNamedArgsSingleStringOptionalRequest + title: ReturnMalformedConstraintsRequest type: object properties: - myString: - type: string + a: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: [] + required: + - a additionalProperties: false - FnOutputBool: + SchemaDescriptions: required: true content: application/json: schema: - title: FnOutputBoolRequest + title: SchemaDescriptionsRequest type: object properties: input: @@ -1872,188 +3695,210 @@ components: required: - input additionalProperties: false - FnOutputClass: + SimpleRecursiveListAlias: required: true content: application/json: schema: - title: FnOutputClassRequest + title: SimpleRecursiveListAliasRequest type: object properties: input: - type: string + anyOf: [] __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input additionalProperties: false - FnOutputClassList: + SimpleRecursiveMapAlias: required: true content: application/json: schema: - title: FnOutputClassListRequest + title: SimpleRecursiveMapAliasRequest type: object properties: input: - type: string + anyOf: [] __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input additionalProperties: false - FnOutputClassNested: + StreamBigNumbers: required: true content: application/json: schema: - title: FnOutputClassNestedRequest + title: StreamBigNumbersRequest type: object properties: - input: + digits: + type: integer + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - digits + additionalProperties: false + StreamFailingAssertion: + required: true + content: + application/json: + schema: + title: StreamFailingAssertionRequest + type: object + properties: + theme: type: string + length: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - theme + - length additionalProperties: false - FnOutputClassWithEnum: + StreamOneBigNumber: required: true content: application/json: schema: - title: FnOutputClassWithEnumRequest + title: StreamOneBigNumberRequest type: object properties: - input: - type: string + digits: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - digits additionalProperties: false - FnOutputStringList: + StreamUnionIntegers: required: true content: application/json: schema: - title: FnOutputStringListRequest + title: StreamUnionIntegersRequest type: object properties: - input: - type: string + digits: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - digits additionalProperties: false - FnTestAliasedEnumOutput: + StreamingCompoundNumbers: required: true content: application/json: schema: - title: FnTestAliasedEnumOutputRequest + title: StreamingCompoundNumbersRequest type: object properties: - input: - type: string + digits: + type: integer + yapping: + type: boolean __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - digits + - yapping additionalProperties: false - FnTestClassAlias: + TakeRecAliasDep: required: true content: application/json: schema: - title: FnTestClassAliasRequest + title: TakeRecAliasDepRequest type: object properties: input: - type: string + $ref: '#/components/schemas/RecursiveAliasDependency' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input additionalProperties: false - FnTestNamedArgsSingleEnum: + TestAnthropic: required: true content: application/json: schema: - title: FnTestNamedArgsSingleEnumRequest + title: TestAnthropicRequest type: object properties: - myArg: - $ref: '#/components/schemas/NamedArgsSingleEnum' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myArg + - input additionalProperties: false - GetDataType: + TestAnthropicShorthand: required: true content: application/json: schema: - title: GetDataTypeRequest + title: TestAnthropicShorthandRequest type: object properties: - text: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - text + - input additionalProperties: false - GetOrderInfo: + TestAws: required: true content: application/json: schema: - title: GetOrderInfoRequest + title: TestAwsRequest type: object properties: - email: - $ref: '#/components/schemas/Email' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - email + - input additionalProperties: false - GetQuery: + TestAwsInvalidAccessKey: required: true content: application/json: schema: - title: GetQueryRequest + title: TestAwsInvalidAccessKeyRequest type: object properties: - query: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - query + - input additionalProperties: false - MyFunc: + TestAwsInvalidProfile: required: true content: application/json: schema: - title: MyFuncRequest + title: TestAwsInvalidProfileRequest type: object properties: input: @@ -2064,12 +3909,12 @@ components: required: - input additionalProperties: false - OptionalTest_Function: + TestAwsInvalidRegion: required: true content: application/json: schema: - title: OptionalTest_FunctionRequest + title: TestAwsInvalidRegionRequest type: object properties: input: @@ -2080,44 +3925,44 @@ components: required: - input additionalProperties: false - PredictAge: + TestAwsInvalidSessionToken: required: true content: application/json: schema: - title: PredictAgeRequest + title: TestAwsInvalidSessionTokenRequest type: object properties: - name: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - name + - input additionalProperties: false - PredictAgeBare: + TestAzure: required: true content: application/json: schema: - title: PredictAgeBareRequest + title: TestAzureRequest type: object properties: - inp: + input: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - inp + - input additionalProperties: false - PromptTestClaude: + TestAzureFailure: required: true content: application/json: schema: - title: PromptTestClaudeRequest + title: TestAzureFailureRequest type: object properties: input: @@ -2128,12 +3973,12 @@ components: required: - input additionalProperties: false - PromptTestClaudeChat: + TestAzureO1NoMaxTokens: required: true content: application/json: schema: - title: PromptTestClaudeChatRequest + title: TestAzureO1NoMaxTokensRequest type: object properties: input: @@ -2144,12 +3989,12 @@ components: required: - input additionalProperties: false - PromptTestClaudeChatNoSystem: + TestAzureO1WithMaxCompletionTokens: required: true content: application/json: schema: - title: PromptTestClaudeChatNoSystemRequest + title: TestAzureO1WithMaxCompletionTokensRequest type: object properties: input: @@ -2160,12 +4005,12 @@ components: required: - input additionalProperties: false - PromptTestOpenAI: + TestAzureO1WithMaxTokens: required: true content: application/json: schema: - title: PromptTestOpenAIRequest + title: TestAzureO1WithMaxTokensRequest type: object properties: input: @@ -2176,12 +4021,12 @@ components: required: - input additionalProperties: false - PromptTestOpenAIChat: + TestAzureWithMaxTokens: required: true content: application/json: schema: - title: PromptTestOpenAIChatRequest + title: TestAzureWithMaxTokensRequest type: object properties: input: @@ -2192,261 +4037,266 @@ components: required: - input additionalProperties: false - PromptTestOpenAIChatNoSystem: + TestCaching: required: true content: application/json: schema: - title: PromptTestOpenAIChatNoSystemRequest + title: TestCachingRequest type: object properties: input: type: string + not_cached: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input + - not_cached additionalProperties: false - PromptTestStreaming: + TestFallbackClient: required: true content: application/json: schema: - title: PromptTestStreamingRequest + title: TestFallbackClientRequest type: object properties: - input: - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' - required: - - input + required: [] additionalProperties: false - ReturnFailingAssert: + TestFallbackToShorthand: required: true content: application/json: schema: - title: ReturnFailingAssertRequest + title: TestFallbackToShorthandRequest type: object properties: - inp: - type: integer + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - inp + - input additionalProperties: false - ReturnMalformedConstraints: + TestFnNamedArgsSingleBool: required: true content: application/json: schema: - title: ReturnMalformedConstraintsRequest + title: TestFnNamedArgsSingleBoolRequest type: object properties: - a: - type: integer + myBool: + type: boolean __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - a + - myBool additionalProperties: false - SchemaDescriptions: + TestFnNamedArgsSingleClass: required: true content: application/json: schema: - title: SchemaDescriptionsRequest + title: TestFnNamedArgsSingleClassRequest type: object properties: - input: - type: string + myArg: + $ref: '#/components/schemas/NamedArgsSingleClass' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - myArg additionalProperties: false - StreamBigNumbers: + TestFnNamedArgsSingleEnumList: required: true content: application/json: schema: - title: StreamBigNumbersRequest + title: TestFnNamedArgsSingleEnumListRequest type: object properties: - digits: - type: integer + myArg: + type: array + items: + $ref: '#/components/schemas/NamedArgsSingleEnumList' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - digits + - myArg additionalProperties: false - StreamFailingAssertion: + TestFnNamedArgsSingleFloat: required: true content: application/json: schema: - title: StreamFailingAssertionRequest + title: TestFnNamedArgsSingleFloatRequest type: object properties: - theme: - type: string - length: - type: integer + myFloat: + type: number __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - theme - - length + - myFloat additionalProperties: false - StreamOneBigNumber: + TestFnNamedArgsSingleInt: required: true content: application/json: schema: - title: StreamOneBigNumberRequest + title: TestFnNamedArgsSingleIntRequest type: object properties: - digits: + myInt: type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - digits + - myInt additionalProperties: false - StreamUnionIntegers: + TestFnNamedArgsSingleMapStringToClass: required: true content: application/json: schema: - title: StreamUnionIntegersRequest + title: TestFnNamedArgsSingleMapStringToClassRequest type: object properties: - digits: - type: integer + myMap: + type: object + additionalProperties: + $ref: '#/components/schemas/StringToClassEntry' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - digits + - myMap additionalProperties: false - StreamingCompoundNumbers: + TestFnNamedArgsSingleMapStringToMap: required: true content: application/json: schema: - title: StreamingCompoundNumbersRequest + title: TestFnNamedArgsSingleMapStringToMapRequest type: object properties: - digits: - type: integer - yapping: - type: boolean + myMap: + type: object + additionalProperties: + type: object + additionalProperties: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - digits - - yapping + - myMap additionalProperties: false - TestAnthropic: + TestFnNamedArgsSingleMapStringToString: required: true content: application/json: schema: - title: TestAnthropicRequest + title: TestFnNamedArgsSingleMapStringToStringRequest type: object properties: - input: - type: string + myMap: + type: object + additionalProperties: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - myMap additionalProperties: false - TestAnthropicShorthand: + TestFnNamedArgsSingleString: required: true content: application/json: schema: - title: TestAnthropicShorthandRequest + title: TestFnNamedArgsSingleStringRequest type: object properties: - input: + myString: type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - myString additionalProperties: false - TestAws: + TestFnNamedArgsSingleStringArray: required: true content: application/json: schema: - title: TestAwsRequest + title: TestFnNamedArgsSingleStringArrayRequest type: object properties: - input: - type: string + myStringArray: + type: array + items: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - myStringArray additionalProperties: false - TestAzure: + TestFnNamedArgsSingleStringList: required: true content: application/json: schema: - title: TestAzureRequest + title: TestFnNamedArgsSingleStringListRequest type: object properties: - input: - type: string + myArg: + type: array + items: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - input + - myArg additionalProperties: false - TestCaching: + TestGemini: required: true content: application/json: schema: - title: TestCachingRequest + title: TestGeminiRequest type: object properties: input: type: string - not_cached: - type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - input - - not_cached additionalProperties: false - TestFallbackClient: + TestGeminiOpenAiGeneric: required: true content: application/json: schema: - title: TestFallbackClientRequest + title: TestGeminiOpenAiGenericRequest type: object properties: __baml_options__: @@ -2454,12 +4304,12 @@ components: $ref: '#/components/schemas/BamlOptions' required: [] additionalProperties: false - TestFallbackToShorthand: + TestGeminiSystem: required: true content: application/json: schema: - title: TestFallbackToShorthandRequest + title: TestGeminiSystemRequest type: object properties: input: @@ -2470,150 +4320,145 @@ components: required: - input additionalProperties: false - TestFnNamedArgsSingleBool: + TestGeminiSystemAsChat: required: true content: application/json: schema: - title: TestFnNamedArgsSingleBoolRequest + title: TestGeminiSystemAsChatRequest type: object properties: - myBool: - type: boolean + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myBool + - input additionalProperties: false - TestFnNamedArgsSingleClass: + TestImageInput: required: true content: application/json: schema: - title: TestFnNamedArgsSingleClassRequest + title: TestImageInputRequest type: object properties: - myArg: - $ref: '#/components/schemas/NamedArgsSingleClass' + img: + $ref: '#/components/schemas/BamlImage' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myArg + - img additionalProperties: false - TestFnNamedArgsSingleEnumList: + TestImageInputAnthropic: required: true content: application/json: schema: - title: TestFnNamedArgsSingleEnumListRequest + title: TestImageInputAnthropicRequest type: object properties: - myArg: - type: array - items: - $ref: '#/components/schemas/NamedArgsSingleEnumList' + img: + $ref: '#/components/schemas/BamlImage' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myArg + - img additionalProperties: false - TestFnNamedArgsSingleFloat: + TestImageListInput: required: true content: application/json: schema: - title: TestFnNamedArgsSingleFloatRequest + title: TestImageListInputRequest type: object properties: - myFloat: - type: number + imgs: + type: array + items: + $ref: '#/components/schemas/BamlImage' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myFloat + - imgs additionalProperties: false - TestFnNamedArgsSingleInt: + TestMemory: required: true content: application/json: schema: - title: TestFnNamedArgsSingleIntRequest + title: TestMemoryRequest type: object properties: - myInt: - type: integer + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myInt + - input additionalProperties: false - TestFnNamedArgsSingleMapStringToClass: + TestMulticlassNamedArgs: required: true content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToClassRequest + title: TestMulticlassNamedArgsRequest type: object properties: - myMap: - type: object - additionalProperties: - $ref: '#/components/schemas/StringToClassEntry' + myArg: + $ref: '#/components/schemas/NamedArgsSingleClass' + myArg2: + $ref: '#/components/schemas/NamedArgsSingleClass' __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myMap + - myArg + - myArg2 additionalProperties: false - TestFnNamedArgsSingleMapStringToMap: + TestNamedArgsLiteralBool: required: true content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToMapRequest + title: TestNamedArgsLiteralBoolRequest type: object properties: - myMap: - type: object - additionalProperties: - type: object - additionalProperties: - type: string + myBool: + type: boolean __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myMap + - myBool additionalProperties: false - TestFnNamedArgsSingleMapStringToString: + TestNamedArgsLiteralInt: required: true content: application/json: schema: - title: TestFnNamedArgsSingleMapStringToStringRequest + title: TestNamedArgsLiteralIntRequest type: object properties: - myMap: - type: object - additionalProperties: - type: string + myInt: + type: integer __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myMap + - myInt additionalProperties: false - TestFnNamedArgsSingleString: + TestNamedArgsLiteralString: required: true content: application/json: schema: - title: TestFnNamedArgsSingleStringRequest + title: TestNamedArgsLiteralStringRequest type: object properties: myString: @@ -2624,48 +4469,28 @@ components: required: - myString additionalProperties: false - TestFnNamedArgsSingleStringArray: - required: true - content: - application/json: - schema: - title: TestFnNamedArgsSingleStringArrayRequest - type: object - properties: - myStringArray: - type: array - items: - type: string - __baml_options__: - nullable: true - $ref: '#/components/schemas/BamlOptions' - required: - - myStringArray - additionalProperties: false - TestFnNamedArgsSingleStringList: + TestOllama: required: true content: application/json: schema: - title: TestFnNamedArgsSingleStringListRequest + title: TestOllamaRequest type: object properties: - myArg: - type: array - items: - type: string + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myArg + - input additionalProperties: false - TestGemini: + TestOpenAI: required: true content: application/json: schema: - title: TestGeminiRequest + title: TestOpenAIRequest type: object properties: input: @@ -2676,81 +4501,76 @@ components: required: - input additionalProperties: false - TestImageInput: + TestOpenAILegacyProvider: required: true content: application/json: schema: - title: TestImageInputRequest + title: TestOpenAILegacyProviderRequest type: object properties: - img: - $ref: '#/components/schemas/BamlImage' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - img + - input additionalProperties: false - TestImageInputAnthropic: + TestOpenAIO1NoMaxTokens: required: true content: application/json: schema: - title: TestImageInputAnthropicRequest + title: TestOpenAIO1NoMaxTokensRequest type: object properties: - img: - $ref: '#/components/schemas/BamlImage' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - img + - input additionalProperties: false - TestImageListInput: + TestOpenAIO1WithMaxCompletionTokens: required: true content: application/json: schema: - title: TestImageListInputRequest + title: TestOpenAIO1WithMaxCompletionTokensRequest type: object properties: - imgs: - type: array - items: - $ref: '#/components/schemas/BamlImage' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - imgs + - input additionalProperties: false - TestMulticlassNamedArgs: + TestOpenAIO1WithMaxTokens: required: true content: application/json: schema: - title: TestMulticlassNamedArgsRequest + title: TestOpenAIO1WithMaxTokensRequest type: object properties: - myArg: - $ref: '#/components/schemas/NamedArgsSingleClass' - myArg2: - $ref: '#/components/schemas/NamedArgsSingleClass' + input: + type: string __baml_options__: nullable: true $ref: '#/components/schemas/BamlOptions' required: - - myArg - - myArg2 + - input additionalProperties: false - TestOllama: + TestOpenAIShorthand: required: true content: application/json: schema: - title: TestOllamaRequest + title: TestOpenAIShorthandRequest type: object properties: input: @@ -2761,12 +4581,12 @@ components: required: - input additionalProperties: false - TestOpenAILegacyProvider: + TestOpenAIWithMaxTokens: required: true content: application/json: schema: - title: TestOpenAILegacyProviderRequest + title: TestOpenAIWithMaxTokensRequest type: object properties: input: @@ -2777,12 +4597,12 @@ components: required: - input additionalProperties: false - TestOpenAIShorthand: + TestOpenAIWithNullMaxTokens: required: true content: application/json: schema: - title: TestOpenAIShorthandRequest + title: TestOpenAIWithNullMaxTokensRequest type: object properties: input: @@ -2832,6 +4652,22 @@ components: $ref: '#/components/schemas/BamlOptions' required: [] additionalProperties: false + TestUniverseQuestion: + required: true + content: + application/json: + schema: + title: TestUniverseQuestionRequest + type: object + properties: + question: + $ref: '#/components/schemas/UniverseQuestionInput' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - question + additionalProperties: false TestVertex: required: true content: @@ -2848,6 +4684,19 @@ components: required: - input additionalProperties: false + TestVertexWithSystemInstructions: + required: true + content: + application/json: + schema: + title: TestVertexWithSystemInstructionsRequest + type: object + properties: + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: [] + additionalProperties: false UnionTest_Function: required: true content: @@ -2866,6 +4715,22 @@ components: required: - input additionalProperties: false + UseBlockConstraint: + required: true + content: + application/json: + schema: + title: UseBlockConstraintRequest + type: object + properties: + inp: + $ref: '#/components/schemas/BlockConstraintForParam' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - inp + additionalProperties: false UseMalformedConstraints: required: true content: @@ -2882,6 +4747,22 @@ components: required: - a additionalProperties: false + UseNestedBlockConstraint: + required: true + content: + application/json: + schema: + title: UseNestedBlockConstraintRequest + type: object + properties: + inp: + $ref: '#/components/schemas/NestedBlockConstraintForParam' + __baml_options__: + nullable: true + $ref: '#/components/schemas/BamlOptions' + required: + - inp + additionalProperties: false schemas: BamlImage: oneOf: @@ -3032,6 +4913,12 @@ components: - MUSIC - READING type: string + MapKey: + enum: + - A + - B + - C + type: string NamedArgsSingleEnum: enum: - ONE @@ -3071,6 +4958,20 @@ components: - F - G type: string + AnotherObject: + type: object + properties: + id: + type: string + thingy2: + type: string + thingy3: + type: string + required: + - id + - thingy2 + - thingy3 + additionalProperties: false BigNumbers: type: object properties: @@ -3082,6 +4983,18 @@ components: - a - b additionalProperties: false + BinaryNode: + type: object + properties: + data: + type: integer + left: + $ref: '#/components/schemas/BinaryNode' + right: + $ref: '#/components/schemas/BinaryNode' + required: + - data + additionalProperties: false Blah: type: object properties: @@ -3089,6 +5002,28 @@ components: type: string required: [] additionalProperties: false + BlockConstraint: + type: object + properties: + foo: + type: integer + bar: + type: string + required: + - foo + - bar + additionalProperties: false + BlockConstraintForParam: + type: object + properties: + bcfp: + type: integer + bcfp2: + type: string + required: + - bcfp + - bcfp2 + additionalProperties: false BookOrder: type: object properties: @@ -3106,6 +5041,14 @@ components: - quantity - price additionalProperties: false + ClassForNullLiteral: + type: object + properties: + a: + type: string + required: + - a + additionalProperties: false ClassOptionalOutput: type: object properties: @@ -3128,6 +5071,25 @@ components: $ref: '#/components/schemas/Blah' required: [] additionalProperties: false + ClassToRecAlias: + type: object + properties: + list: + $ref: '#/components/schemas/LinkedListAliasNode' + required: + - list + additionalProperties: false + ClassWithBlockDone: + type: object + properties: + i_16_digits: + type: integer + s_20_words: + type: string + required: + - i_16_digits + - s_20_words + additionalProperties: false ClassWithImage: type: object properties: @@ -3142,6 +5104,39 @@ components: - param2 - fake_image additionalProperties: false + ClassWithoutDone: + type: object + properties: + i_16_digits: + type: integer + s_20_words: + type: string + required: + - i_16_digits + - s_20_words + additionalProperties: false + ComplexMemoryObject: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + metadata: + type: array + items: + oneOf: + - type: string + - type: integer + - type: number + required: + - id + - name + - description + - metadata + additionalProperties: false CompoundBigNumbers: type: object properties: @@ -3240,13 +5235,13 @@ components: checks: type: object properties: - no_infants: - $ref: '#components/schemas/Check' earth_aged: $ref: '#components/schemas/Check' + no_infants: + $ref: '#components/schemas/Check' required: - - no_infants - earth_aged + - no_infants additionalProperties: false required: - value @@ -3294,22 +5289,7 @@ components: type: object properties: value: - type: object - properties: - value: - type: string - checks: - type: object - properties: - valid_email: - $ref: '#components/schemas/Check' - required: - - valid_email - additionalProperties: false - required: - - value - - checks - additionalProperties: false + type: string required: - value additionalProperties: false @@ -3390,16 +5370,16 @@ components: checks: type: object properties: + regex_good: + $ref: '#components/schemas/Check' regex_bad: $ref: '#components/schemas/Check' trivial: $ref: '#components/schemas/Check' - regex_good: - $ref: '#components/schemas/Check' required: + - regex_good - regex_bad - trivial - - regex_good additionalProperties: false required: - value @@ -3410,6 +5390,60 @@ components: - certainty - species additionalProperties: false + Forest: + type: object + properties: + trees: + type: array + items: + $ref: '#/components/schemas/Tree' + required: + - trees + additionalProperties: false + FormatterTest0: + type: object + properties: + lorem: + type: string + ipsum: + type: string + required: + - lorem + - ipsum + additionalProperties: false + FormatterTest1: + type: object + properties: + lorem: + type: string + ipsum: + type: string + required: + - lorem + - ipsum + additionalProperties: false + FormatterTest2: + type: object + properties: + lorem: + type: string + ipsum: + type: string + required: + - lorem + - ipsum + additionalProperties: false + FormatterTest3: + type: object + properties: + lorem: + type: string + ipsum: + type: string + required: + - lorem + - ipsum + additionalProperties: false GroceryReceipt: type: object properties: @@ -3479,6 +5513,50 @@ components: - key - nested additionalProperties: false + LinkedList: + type: object + properties: + head: + $ref: '#/components/schemas/Node' + len: + type: integer + required: + - len + additionalProperties: false + LinkedListAliasNode: + type: object + properties: + value: + type: integer + next: + $ref: '#/components/schemas/LinkedListAliasNode' + required: + - value + additionalProperties: false + LiteralClassHello: + type: object + properties: + prop: + type: string + required: + - prop + additionalProperties: false + LiteralClassOne: + type: object + properties: + prop: + type: string + required: + - prop + additionalProperties: false + LiteralClassTwo: + type: object + properties: + prop: + type: string + required: + - prop + additionalProperties: false MalformedConstraints: type: object properties: @@ -3533,6 +5611,43 @@ components: required: - age additionalProperties: false + MemoryObject: + type: object + properties: + id: + type: string + name: + type: string + description: + type: string + required: + - id + - name + - description + additionalProperties: false + MergeAttrs: + type: object + properties: + amount: + type: object + properties: + value: + type: integer + checks: + type: object + properties: + gt_ten: + $ref: '#components/schemas/Check' + required: + - gt_ten + additionalProperties: false + required: + - value + - checks + additionalProperties: false + required: + - amount + additionalProperties: false NamedArgsSingleClass: type: object properties: @@ -3572,6 +5687,70 @@ components: - type: string required: [] additionalProperties: false + NestedBlockConstraint: + type: object + properties: + nbc: + type: object + properties: + value: + $ref: '#/components/schemas/BlockConstraint' + checks: + type: object + properties: + cross_field: + $ref: '#components/schemas/Check' + required: + - cross_field + additionalProperties: false + required: + - value + - checks + additionalProperties: false + required: + - nbc + additionalProperties: false + NestedBlockConstraintForParam: + type: object + properties: + nbcfp: + $ref: '#/components/schemas/BlockConstraintForParam' + required: + - nbcfp + additionalProperties: false + Node: + type: object + properties: + data: + type: integer + next: + $ref: '#/components/schemas/Node' + required: + - data + additionalProperties: false + NodeWithAliasIndirection: + type: object + properties: + value: + type: integer + next: + $ref: '#/components/schemas/NodeWithAliasIndirection' + required: + - value + additionalProperties: false + OptionalListAndMap: + type: object + properties: + p: + type: array + items: + type: string + q: + type: object + additionalProperties: + type: string + required: [] + additionalProperties: false OptionalTest_Prop1: type: object properties: @@ -3638,22 +5817,7 @@ components: type: object properties: value: - type: object - properties: - value: - type: string - checks: - type: object - properties: - valid_phone_number: - $ref: '#components/schemas/Check' - required: - - valid_phone_number - additionalProperties: false - required: - - value - - checks - additionalProperties: false + type: string required: - value additionalProperties: false @@ -3730,6 +5894,14 @@ components: - ingredients - recipe_type additionalProperties: false + RecursiveAliasDependency: + type: object + properties: + value: + anyOf: [] + required: + - value + additionalProperties: false Resume: type: object properties: @@ -3830,6 +6002,48 @@ components: - description - tags additionalProperties: false + SemanticContainer: + type: object + properties: + sixteen_digit_number: + type: integer + string_with_twenty_words: + type: string + class_1: + $ref: '#/components/schemas/ClassWithoutDone' + class_2: + $ref: '#/components/schemas/ClassWithBlockDone' + class_done_needed: + $ref: '#/components/schemas/ClassWithBlockDone' + class_needed: + $ref: '#/components/schemas/ClassWithoutDone' + three_small_things: + type: array + items: + $ref: '#/components/schemas/SmallThing' + final_string: + type: string + required: + - sixteen_digit_number + - string_with_twenty_words + - class_1 + - class_2 + - class_done_needed + - class_needed + - three_small_things + - final_string + additionalProperties: false + SmallThing: + type: object + properties: + i_16_digits: + type: integer + i_8_digits: + type: integer + required: + - i_16_digits + - i_8_digits + additionalProperties: false SomeClassNestedDynamic: type: object properties: @@ -3888,6 +6102,27 @@ components: - prop1 - prop2 additionalProperties: false + TestMemoryOutput: + type: object + properties: + items: + type: array + items: + oneOf: + - $ref: '#/components/schemas/MemoryObject' + - $ref: '#/components/schemas/ComplexMemoryObject' + - $ref: '#/components/schemas/AnotherObject' + more_items: + type: array + items: + oneOf: + - $ref: '#/components/schemas/MemoryObject' + - $ref: '#/components/schemas/ComplexMemoryObject' + - $ref: '#/components/schemas/AnotherObject' + required: + - items + - more_items + additionalProperties: false TestOutputClass: type: object properties: @@ -3899,6 +6134,17 @@ components: - prop1 - prop2 additionalProperties: false + Tree: + type: object + properties: + data: + type: integer + children: + $ref: '#/components/schemas/Forest' + required: + - data + - children + additionalProperties: false TwoStoriesOneTitle: type: object properties: @@ -3939,6 +6185,25 @@ components: - prop2 - prop3 additionalProperties: false + UniverseQuestion: + type: object + properties: + question: + type: string + answer: + type: string + required: + - question + - answer + additionalProperties: false + UniverseQuestionInput: + type: object + properties: + question: + type: string + required: + - question + additionalProperties: false WithReasoning: type: object properties: diff --git a/integ-tests/python/baml_client/async_client.py b/integ-tests/python/baml_client/async_client.py index 1a6ce3647..3f03984f9 100644 --- a/integ-tests/python/baml_client/async_client.py +++ b/integ-tests/python/baml_client/async_client.py @@ -3477,6 +3477,29 @@ async def TestSingleFallbackClient( ) return cast(str, raw.cast_to(types, types, partial_types, False)) + async def TestUniverseQuestion( + self, + question: types.UniverseQuestionInput, + baml_options: BamlCallOptions = {}, + ) -> types.UniverseQuestion: + __tb__ = baml_options.get("tb", None) + if __tb__ is not None: + tb = __tb__._tb # type: ignore (we know how to use this private attribute) + else: + tb = None + __cr__ = baml_options.get("client_registry", None) + + raw = await self.__runtime.call_function( + "TestUniverseQuestion", + { + "question": question, + }, + self.__ctx_manager.get(), + tb, + __cr__, + ) + return cast(types.UniverseQuestion, raw.cast_to(types, types, partial_types, False)) + async def TestVertex( self, input: str, @@ -8099,6 +8122,36 @@ def TestSingleFallbackClient( self.__ctx_manager.get(), ) + def TestUniverseQuestion( + self, + question: types.UniverseQuestionInput, + baml_options: BamlCallOptions = {}, + ) -> baml_py.BamlStream[partial_types.UniverseQuestion, types.UniverseQuestion]: + __tb__ = baml_options.get("tb", None) + if __tb__ is not None: + tb = __tb__._tb # type: ignore (we know how to use this private attribute) + else: + tb = None + __cr__ = baml_options.get("client_registry", None) + + raw = self.__runtime.stream_function( + "TestUniverseQuestion", + { + "question": question, + }, + None, + self.__ctx_manager.get(), + tb, + __cr__, + ) + + return baml_py.BamlStream[partial_types.UniverseQuestion, types.UniverseQuestion]( + raw, + lambda x: cast(partial_types.UniverseQuestion, x.cast_to(types, types, partial_types, True)), + lambda x: cast(types.UniverseQuestion, x.cast_to(types, types, partial_types, False)), + self.__ctx_manager.get(), + ) + def TestVertex( self, input: str, diff --git a/integ-tests/python/baml_client/inlinedbaml.py b/integ-tests/python/baml_client/inlinedbaml.py index b1606a38b..0d5d66f33 100644 --- a/integ-tests/python/baml_client/inlinedbaml.py +++ b/integ-tests/python/baml_client/inlinedbaml.py @@ -26,7 +26,7 @@ "fiddle-examples/images/image.baml": "function DescribeImage(img: image) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n\n Describe the image below in 20 words:\n {{ img }}\n \"#\n\n}\n\nclass FakeImage {\n url string\n}\n\nclass ClassWithImage {\n myImage image\n param2 string\n fake_image FakeImage\n}\n\n// chat role user present\nfunction DescribeImage2(classWithImage: ClassWithImage, img2: image) -> string { \n client GPT4Turbo\n prompt #\"\n {{ _.role(\"user\") }}\n You should return 2 answers that answer the following commands.\n\n 1. Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n 2. Also tell me what's happening here in one sentence:\n {{ img2 }}\n \"#\n}\n\n// no chat role\nfunction DescribeImage3(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\n\n// system prompt and chat prompt\nfunction DescribeImage4(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n {{ _.role(\"system\")}}\n\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\ntest TestName {\n functions [DescribeImage]\n args {\n img { url \"https://imgs.xkcd.com/comics/standards.png\"}\n }\n}\n", "fiddle-examples/symbol-tuning.baml": "enum Category3 {\n Refund @alias(\"k1\")\n @description(\"Customer wants to refund a product\")\n\n CancelOrder @alias(\"k2\")\n @description(\"Customer wants to cancel an order\")\n\n TechnicalSupport @alias(\"k3\")\n @description(\"Customer needs help with a technical issue unrelated to account creation or login\")\n\n AccountIssue @alias(\"k4\")\n @description(\"Specifically relates to account-login or account-creation\")\n\n Question @alias(\"k5\")\n @description(\"Customer has a question\")\n}\n\nfunction ClassifyMessage3(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", "formatter/test-comments.baml": "class FormatterTest0 {\n lorem string // trailing comments should be preserved\n ipsum string\n}\n\nclass FormatterTest1 {\n lorem string\n ipsum string\n // dolor string\n}\n\nclass FormatterTest2 {\n // \"lorem\" is a latin word\n lorem string\n // \"ipsum\" is a latin word\n ipsum string\n}\n\nclass FormatterTest3 {\n lorem string\n ipsum string\n // Lorem ipsum dolor sit amet\n // Consectetur adipiscing elit\n // Sed do eiusmod tempor incididunt\n // Ut labore et dolore magna aliqua\n // Ut enim ad minim veniam\n}", - "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.74.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.74.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.74.0\"\n}\n\n// generator openapi {\n// output_type rest/openapi\n// output_dir \"../openapi\"\n// version \"0.74.0\"\n// on_generate \"rm .gitignore\"\n// }\n", + "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.74.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.74.0\"\n}\n\ngenerator lang_typescript_react {\n output_type typescript/react\n output_dir \"../react\"\n version \"0.74.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.74.0\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.74.0\"\n on_generate \"rm .gitignore\"\n}", "test-files/aliases/aliased-inputs.baml": "\nclass InputClass {\n key string @alias(\"color\")\n key2 string\n}\n\n\nclass InputClassNested {\n key string\n nested InputClass @alias(\"interesting-key\")\n}\n \n\nfunction AliasedInputClass(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {{input}}\n\n This is a test. What's the name of the first json key above? Remember, tell me the key, not value.\n \"#\n}\n \nfunction AliasedInputClass2(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {# making sure we can still access the original key #}\n {%if input.key == \"tiger\"%}\n Repeat this value back to me, and nothing else: {{input.key}}\n {%endif%}\n \"#\n}\n \n function AliasedInputClassNested(input: InputClassNested) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n\n {{input}}\n\n This is a test. What's the name of the second json key above? Remember, tell me the key, not value.\n \"#\n }\n\n\nenum AliasedEnum {\n KEY_ONE @alias(\"tiger\")\n KEY_TWO\n}\n\nfunction AliasedInputEnum(input: AliasedEnum) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\")}}\n\n\n Write out this word only in your response, in lowercase:\n ---\n {{input}}\n ---\n Answer:\n \"#\n}\n\n\nfunction AliasedInputList(input: AliasedEnum[]) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n Given this array:\n ---\n {{input}}\n ---\n\n Return the first element in the array:\n \"#\n}\n\n", "test-files/aliases/classes.baml": "class TestClassAlias {\n key string @alias(\"key-dash\") @description(#\"\n This is a description for key\n af asdf\n \"#)\n key2 string @alias(\"key21\")\n key3 string @alias(\"key with space\")\n key4 string //unaliased\n key5 string @alias(\"key.with.punctuation/123\")\n}\n\nfunction FnTestClassAlias(input: string) -> TestClassAlias {\n client GPT35\n prompt #\"\n {{ctx.output_format}}\n \"#\n}\n\ntest FnTestClassAlias {\n functions [FnTestClassAlias]\n args {\n input \"example input\"\n }\n}\n", "test-files/aliases/enums.baml": "enum TestEnum {\n A @alias(\"k1\") @description(#\"\n User is angry\n \"#)\n B @alias(\"k22\") @description(#\"\n User is happy\n \"#)\n // tests whether k1 doesnt incorrectly get matched with k11\n C @alias(\"k11\") @description(#\"\n User is sad\n \"#)\n D @alias(\"k44\") @description(\n User is confused\n )\n E @description(\n User is excited\n )\n F @alias(\"k5\") // only alias\n \n G @alias(\"k6\") @description(#\"\n User is bored\n With a long description\n \"#)\n \n @@alias(\"Category\")\n}\n\nfunction FnTestAliasedEnumOutput(input: string) -> TestEnum {\n client GPT35\n prompt #\"\n Classify the user input into the following category\n \n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{input}}\n\n {{ _.role('assistant') }}\n Category ID:\n \"#\n}\n\ntest FnTestAliasedEnumOutput {\n functions [FnTestAliasedEnumOutput]\n args {\n input \"mehhhhh\"\n }\n}", @@ -93,7 +93,7 @@ "test-files/functions/v2/basic.baml": "\n\nfunction ExtractResume2(resume: string) -> Resume {\n client GPT4\n prompt #\"\n {{ _.role('system') }}\n\n Extract the following information from the resume:\n\n Resume:\n <<<<\n {{ resume }}\n <<<<\n\n Output JSON schema:\n {{ ctx.output_format }}\n\n JSON:\n \"#\n}\n\n\nclass WithReasoning {\n value string\n reasoning string @description(#\"\n Why the value is a good fit.\n \"#)\n}\n\n\nclass SearchParams {\n dateRange int? @description(#\"\n In ISO duration format, e.g. P1Y2M10D.\n \"#)\n location string[]\n jobTitle WithReasoning? @description(#\"\n An exact job title, not a general category.\n \"#)\n company WithReasoning? @description(#\"\n The exact name of the company, not a product or service.\n \"#)\n description WithReasoning[] @description(#\"\n Any specific projects or features the user is looking for.\n \"#)\n tags (Tag | string)[]\n}\n\nenum Tag {\n Security\n AI\n Blockchain\n}\n\nfunction GetQuery(query: string) -> SearchParams {\n client GPT4\n prompt #\"\n Extract the following information from the query:\n\n Query:\n <<<<\n {{ query }}\n <<<<\n\n OUTPUT_JSON_SCHEMA:\n {{ ctx.output_format }}\n\n Before OUTPUT_JSON_SCHEMA, list 5 intentions the user may have.\n --- EXAMPLES ---\n 1. \n 2. \n 3. \n 4. \n 5. \n\n {\n ... // OUTPUT_JSON_SCHEMA\n }\n \"#\n}\n\nclass RaysData {\n dataType DataType\n value Resume | Event\n}\n\nenum DataType {\n Resume\n Event\n}\n\nclass Event {\n title string\n date string\n location string\n description string\n}\n\nfunction GetDataType(text: string) -> RaysData {\n client GPT4\n prompt #\"\n Extract the relevant info.\n\n Text:\n <<<<\n {{ text }}\n <<<<\n\n Output JSON schema:\n {{ ctx.output_format }}\n\n JSON:\n \"#\n}", "test-files/load-test/memory.baml": "\n\nclass MemoryObject {\n id string\n name string\n description string\n}\n\nclass ComplexMemoryObject {\n id string\n name string\n description string\n metadata (string | int | float)[] @description(#\"\n Additional metadata about the memory object, which can be a mix of types.\n \"#)\n}\n\nclass AnotherObject {\n id string\n thingy2 string\n thingy3 string\n}\n\nclass TestMemoryOutput {\n items (MemoryObject | ComplexMemoryObject | AnotherObject)[] @description(#\"\n Add 10 items, which can be either simple MemoryObjects or more complex MemoryObjects with metadata.\n \"#)\n more_items (MemoryObject | ComplexMemoryObject | AnotherObject)[] @description(#\"\n Add 3 more items, which can be either simple MemoryObjects or more complex MemoryObjects with metadata.\n \"#)\n}\n\n\nfunction TestMemory(input: string) -> TestMemoryOutput {\n client GPT35\n prompt #\"\n Return a json blob that matches the schema:\n {{ ctx.output_format }}\n \"#\n}\n\ntest TestName {\n functions [TestMemory]\n args {\n input #\"\n hello world\n \"#\n }\n}\n", "test-files/providers/anthropic.baml": "function TestAnthropic(input: string) -> string {\n client Claude\n prompt #\"\n Write a nice haiku about {{ input }}\n \"#\n}\n\nfunction TestAnthropicShorthand(input: string) -> string {\n client \"anthropic/claude-3-haiku-20240307\"\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestCaching(input: string, not_cached: string) -> string {\n client ClaudeWithCaching\n prompt #\"\n {{ _.role('system', cache_control={\"type\": \"ephemeral\"}) }}\n Generate the following story\n {{ input }}\n\n {# Haiku require 2048 tokens to cache -#}\n {{ input }}\n\n {{ _.role('user') }}\n {{ not_cached }}\n \"#\n}", - "test-files/providers/aws.baml": "function TestAws(input: string) -> string {\n client AwsBedrock\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidRegion(input: string) -> string {\n client AwsBedrockInvalidRegion\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidAccessKey(input: string) -> string {\n client AwsBedrockInvalidAccessKey\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidProfile(input: string) -> string {\n client AwsBedrockInvalidProfile\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidSessionToken(input: string) -> string {\n client AwsBedrockInvalidSessionToken\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}", + "test-files/providers/aws.baml": "function TestAws(input: string) -> string {\n client AwsBedrock\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\n/// my docs\nclass UniverseQuestion {\n question string\n answer string\n}\n\nclass UniverseQuestionInput {\n question string\n}\n\nfunction TestUniverseQuestion(question: UniverseQuestionInput) -> UniverseQuestion {\n client AwsBedrock\n prompt #\"\n You are a helpful assistant that answers questions about the universe.\n\n {{ ctx.output_format }}\n\n {{ _.role(\"user\")}}\n\n Question: {{ question }}\n\n Answer:\n \"#\n}\n\n\nfunction TestAwsInvalidRegion(input: string) -> string {\n client AwsBedrockInvalidRegion\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidAccessKey(input: string) -> string {\n client AwsBedrockInvalidAccessKey\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidProfile(input: string) -> string {\n client AwsBedrockInvalidProfile\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidSessionToken(input: string) -> string {\n client AwsBedrockInvalidSessionToken\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}", "test-files/providers/azure.baml": "// Test standard Azure GPT-3.5 (should add default max_tokens)\nfunction TestAzure(input: string) -> string {\n client GPT35Azure\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model without max_tokens (should not add default)\nfunction TestAzureO1NoMaxTokens(input: string) -> string {\n client AzureO1\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_tokens (should keep user value)\nfunction TestAzureO1WithMaxTokens(input: string) -> string {\n client AzureO1WithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_completion_tokens (should keep user value)\nfunction TestAzureO1WithMaxCompletionTokens(input: string) -> string {\n client AzureO1WithMaxCompletionTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test GPT-3.5 with explicit max_tokens (should keep user value)\nfunction TestAzureWithMaxTokens(input: string) -> string {\n client GPT35AzureWithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test failure case with invalid resource name\nfunction TestAzureFailure(input: string) -> string {\n client GPT35AzureFailed\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\nclient AzureWithNullMaxTokens {\n provider azure-openai\n options {\n resource_name env.AZURE_OPENAI_RESOURCE_NAME\n deployment_id env.AZURE_OPENAI_DEPLOYMENT_ID\n api_version \"2024-02-01\"\n max_tokens null\n }\n}\n\n// Add test cases to verify the behavior\ntest TestAzureClients {\n functions [\n TestAzure,\n TestAzureO1NoMaxTokens,\n TestAzureO1WithMaxTokens,\n TestAzureWithMaxTokens,\n TestAzureO1WithMaxCompletionTokens\n ]\n args {\n input \"Cherry blossoms\"\n }\n}\n\n// Test failure case separately\ntest TestAzureFailureCase {\n functions [TestAzureFailure]\n args {\n input \"Cherry blossoms\"\n }\n}", "test-files/providers/gemini.baml": "function TestGemini(input: string) -> string {\n client Gemini\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiSystem(input: string) -> string {\n client Gemini\n prompt #\"\n {{ _.role('system') }}\n\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiSystemAsChat(input: string) -> string {\n client Gemini\n prompt #\"\n {{ _.role('system') }} You are a helpful assistant\n\n {{_.role(\"user\")}} Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiOpenAiGeneric() -> string {\n client GeminiOpenAiGeneric\n prompt #\"{{_.role(\"system\")}} You are a helpful assistant\n {{_.role(\"user\")}} Write a poem about llamas\n \"#\n}\n\ntest TestName {\n functions [TestGeminiSystem]\n args {\n input #\"\n hello world\n \"#\n }\n}\n", "test-files/providers/ollama.baml": "function TestOllama(input: string) -> string {\n client Ollama\n prompt #\"\n Write a nice haiku about {{ input }}\n \"#\n}", diff --git a/integ-tests/python/baml_client/partial_types.py b/integ-tests/python/baml_client/partial_types.py index f2074a598..ec55412c0 100644 --- a/integ-tests/python/baml_client/partial_types.py +++ b/integ-tests/python/baml_client/partial_types.py @@ -423,6 +423,14 @@ class UnionTest_ReturnType(BaseModel): prop2: List[Optional[Union[Optional[float], Optional[bool]]]] prop3: Optional[Union[List[Optional[bool]], List[Optional[int]]]] = None +class UniverseQuestion(BaseModel): + """my docs""" + question: Optional[str] = None + answer: Optional[str] = None + +class UniverseQuestionInput(BaseModel): + question: Optional[str] = None + class WithReasoning(BaseModel): value: Optional[str] = None reasoning: Optional[str] = None diff --git a/integ-tests/python/baml_client/sync_client.py b/integ-tests/python/baml_client/sync_client.py index ed15fa19a..6483800b5 100644 --- a/integ-tests/python/baml_client/sync_client.py +++ b/integ-tests/python/baml_client/sync_client.py @@ -3474,6 +3474,29 @@ def TestSingleFallbackClient( ) return cast(str, raw.cast_to(types, types, partial_types, False)) + def TestUniverseQuestion( + self, + question: types.UniverseQuestionInput, + baml_options: BamlCallOptions = {}, + ) -> types.UniverseQuestion: + __tb__ = baml_options.get("tb", None) + if __tb__ is not None: + tb = __tb__._tb # type: ignore (we know how to use this private attribute) + else: + tb = None + __cr__ = baml_options.get("client_registry", None) + + raw = self.__runtime.call_function_sync( + "TestUniverseQuestion", + { + "question": question, + }, + self.__ctx_manager.get(), + tb, + __cr__, + ) + return cast(types.UniverseQuestion, raw.cast_to(types, types, partial_types, False)) + def TestVertex( self, input: str, @@ -8097,6 +8120,36 @@ def TestSingleFallbackClient( self.__ctx_manager.get(), ) + def TestUniverseQuestion( + self, + question: types.UniverseQuestionInput, + baml_options: BamlCallOptions = {}, + ) -> baml_py.BamlSyncStream[partial_types.UniverseQuestion, types.UniverseQuestion]: + __tb__ = baml_options.get("tb", None) + if __tb__ is not None: + tb = __tb__._tb # type: ignore (we know how to use this private attribute) + else: + tb = None + __cr__ = baml_options.get("client_registry", None) + + raw = self.__runtime.stream_function_sync( + "TestUniverseQuestion", + { + "question": question, + }, + None, + self.__ctx_manager.get(), + tb, + __cr__, + ) + + return baml_py.BamlSyncStream[partial_types.UniverseQuestion, types.UniverseQuestion]( + raw, + lambda x: cast(partial_types.UniverseQuestion, x.cast_to(types, types, partial_types, True)), + lambda x: cast(types.UniverseQuestion, x.cast_to(types, types, partial_types, False)), + self.__ctx_manager.get(), + ) + def TestVertex( self, input: str, diff --git a/integ-tests/python/baml_client/type_builder.py b/integ-tests/python/baml_client/type_builder.py index 3a4c81913..22f656315 100644 --- a/integ-tests/python/baml_client/type_builder.py +++ b/integ-tests/python/baml_client/type_builder.py @@ -20,7 +20,7 @@ class TypeBuilder(_TypeBuilder): def __init__(self): super().__init__(classes=set( - ["AnotherObject","BigNumbers","BinaryNode","Blah","BlockConstraint","BlockConstraintForParam","BookOrder","ClassForNullLiteral","ClassOptionalOutput","ClassOptionalOutput2","ClassToRecAlias","ClassWithBlockDone","ClassWithImage","ClassWithoutDone","ComplexMemoryObject","CompoundBigNumbers","ContactInfo","CustomTaskResult","DummyOutput","DynInputOutput","DynamicClassOne","DynamicClassTwo","DynamicOutput","Earthling","Education","Email","EmailAddress","Event","FakeImage","FlightConfirmation","FooAny","Forest","FormatterTest0","FormatterTest1","FormatterTest2","FormatterTest3","GroceryReceipt","InnerClass","InnerClass2","InputClass","InputClassNested","LinkedList","LinkedListAliasNode","LiteralClassHello","LiteralClassOne","LiteralClassTwo","MalformedConstraints","MalformedConstraints2","Martian","MemoryObject","MergeAttrs","NamedArgsSingleClass","Nested","Nested2","NestedBlockConstraint","NestedBlockConstraintForParam","Node","NodeWithAliasIndirection","OptionalListAndMap","OptionalTest_Prop1","OptionalTest_ReturnType","OrderInfo","OriginalA","OriginalB","Person","PhoneNumber","Quantity","RaysData","ReceiptInfo","ReceiptItem","Recipe","RecursiveAliasDependency","Resume","Schema","SearchParams","SemanticContainer","SmallThing","SomeClassNestedDynamic","StringToClassEntry","TestClassAlias","TestClassNested","TestClassWithEnum","TestMemoryOutput","TestOutputClass","Tree","TwoStoriesOneTitle","UnionTest_ReturnType","WithReasoning",] + ["AnotherObject","BigNumbers","BinaryNode","Blah","BlockConstraint","BlockConstraintForParam","BookOrder","ClassForNullLiteral","ClassOptionalOutput","ClassOptionalOutput2","ClassToRecAlias","ClassWithBlockDone","ClassWithImage","ClassWithoutDone","ComplexMemoryObject","CompoundBigNumbers","ContactInfo","CustomTaskResult","DummyOutput","DynInputOutput","DynamicClassOne","DynamicClassTwo","DynamicOutput","Earthling","Education","Email","EmailAddress","Event","FakeImage","FlightConfirmation","FooAny","Forest","FormatterTest0","FormatterTest1","FormatterTest2","FormatterTest3","GroceryReceipt","InnerClass","InnerClass2","InputClass","InputClassNested","LinkedList","LinkedListAliasNode","LiteralClassHello","LiteralClassOne","LiteralClassTwo","MalformedConstraints","MalformedConstraints2","Martian","MemoryObject","MergeAttrs","NamedArgsSingleClass","Nested","Nested2","NestedBlockConstraint","NestedBlockConstraintForParam","Node","NodeWithAliasIndirection","OptionalListAndMap","OptionalTest_Prop1","OptionalTest_ReturnType","OrderInfo","OriginalA","OriginalB","Person","PhoneNumber","Quantity","RaysData","ReceiptInfo","ReceiptItem","Recipe","RecursiveAliasDependency","Resume","Schema","SearchParams","SemanticContainer","SmallThing","SomeClassNestedDynamic","StringToClassEntry","TestClassAlias","TestClassNested","TestClassWithEnum","TestMemoryOutput","TestOutputClass","Tree","TwoStoriesOneTitle","UnionTest_ReturnType","UniverseQuestion","UniverseQuestionInput","WithReasoning",] ), enums=set( ["AliasedEnum","Category","Category2","Category3","Color","DataType","DynEnumOne","DynEnumTwo","EnumInClass","EnumOutput","Hobby","MapKey","NamedArgsSingleEnum","NamedArgsSingleEnumList","OptionalTest_CategoryType","OrderStatus","Tag","TestEnum",] )) diff --git a/integ-tests/python/baml_client/types.py b/integ-tests/python/baml_client/types.py index e6577a711..2afe27ed1 100644 --- a/integ-tests/python/baml_client/types.py +++ b/integ-tests/python/baml_client/types.py @@ -543,6 +543,14 @@ class UnionTest_ReturnType(BaseModel): prop2: List[Union[float, bool]] prop3: Union[List[bool], List[int]] +class UniverseQuestion(BaseModel): + """my docs""" + question: str + answer: str + +class UniverseQuestionInput(BaseModel): + question: str + class WithReasoning(BaseModel): value: str reasoning: str diff --git a/integ-tests/react/.gitignore b/integ-tests/react/.gitignore new file mode 100644 index 000000000..5ef6a5207 --- /dev/null +++ b/integ-tests/react/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/integ-tests/react/README.md b/integ-tests/react/README.md new file mode 100644 index 000000000..e215bc4cc --- /dev/null +++ b/integ-tests/react/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/integ-tests/react/baml_client/async_client.ts b/integ-tests/react/baml_client/async_client.ts new file mode 100644 index 000000000..ee56f753a --- /dev/null +++ b/integ-tests/react/baml_client/async_client.ts @@ -0,0 +1,9102 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { BamlRuntime, FunctionResult, BamlCtxManager, BamlStream, Image, ClientRegistry, BamlValidationError, createBamlValidationError } from "@boundaryml/baml" +import type { Checked, Check, RecursivePartialNull as MovedRecursivePartialNull } from "./types" +import type { partial_types } from "./partial_types"; +import type {AnotherObject, BigNumbers, BinaryNode, Blah, BlockConstraint, BlockConstraintForParam, BookOrder, ClassForNullLiteral, ClassOptionalOutput, ClassOptionalOutput2, ClassToRecAlias, ClassWithBlockDone, ClassWithImage, ClassWithoutDone, ComplexMemoryObject, CompoundBigNumbers, ContactInfo, CustomTaskResult, DummyOutput, DynInputOutput, DynamicClassOne, DynamicClassTwo, DynamicOutput, Earthling, Education, Email, EmailAddress, Event, FakeImage, FlightConfirmation, FooAny, Forest, FormatterTest0, FormatterTest1, FormatterTest2, FormatterTest3, GroceryReceipt, InnerClass, InnerClass2, InputClass, InputClassNested, LinkedList, LinkedListAliasNode, LiteralClassHello, LiteralClassOne, LiteralClassTwo, MalformedConstraints, MalformedConstraints2, Martian, MemoryObject, MergeAttrs, NamedArgsSingleClass, Nested, Nested2, NestedBlockConstraint, NestedBlockConstraintForParam, Node, NodeWithAliasIndirection, OptionalListAndMap, OptionalTest_Prop1, OptionalTest_ReturnType, OrderInfo, OriginalA, OriginalB, Person, PhoneNumber, Quantity, RaysData, ReceiptInfo, ReceiptItem, Recipe, RecursiveAliasDependency, Resume, Schema, SearchParams, SemanticContainer, SmallThing, SomeClassNestedDynamic, StringToClassEntry, TestClassAlias, TestClassNested, TestClassWithEnum, TestMemoryOutput, TestOutputClass, Tree, TwoStoriesOneTitle, UnionTest_ReturnType, UniverseQuestion, UniverseQuestionInput, WithReasoning, AliasedEnum, Category, Category2, Category3, Color, DataType, DynEnumOne, DynEnumTwo, EnumInClass, EnumOutput, Hobby, MapKey, NamedArgsSingleEnum, NamedArgsSingleEnumList, OptionalTest_CategoryType, OrderStatus, Tag, TestEnum, RecursiveMapAlias, RecursiveListAlias, RecAliasOne, RecAliasTwo, RecAliasThree, JsonValue, JsonObject, JsonArray} from "./types" +import TypeBuilder from "./type_builder" +import { DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME } from "./globals" + +/** + * @deprecated Use RecursivePartialNull from 'baml_client/types' instead. + */ +export type RecursivePartialNull = MovedRecursivePartialNull + +export class BamlAsyncClient { + private runtime: BamlRuntime + private ctx_manager: BamlCtxManager + private stream_client: BamlStreamClient + + constructor(runtime: BamlRuntime, ctx_manager: BamlCtxManager) { + this.runtime = runtime + this.ctx_manager = ctx_manager + this.stream_client = new BamlStreamClient(runtime, ctx_manager) + } + + get stream() { + return this.stream_client + } + + + async AaaSamOutputFormat( + recipe: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AaaSamOutputFormat", + { + "recipe": recipe + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Recipe + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasThatPointsToRecursiveType( + list: LinkedListAliasNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasThatPointsToRecursiveType", + { + "list": list + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LinkedListAliasNode + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasWithMultipleAttrs( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "AliasWithMultipleAttrs", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasedInputClass( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasedInputClass", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasedInputClass2( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasedInputClass2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasedInputClassNested( + input: InputClassNested, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasedInputClassNested", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasedInputEnum( + input: AliasedEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasedInputEnum", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AliasedInputList( + input: AliasedEnum[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AliasedInputList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AllowedOptionals( + optionals: OptionalListAndMap, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AllowedOptionals", + { + "optionals": optionals + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OptionalListAndMap + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AssertFn( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AssertFn", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async AudioInput( + aud: Audio, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "AudioInput", + { + "aud": aud + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async BuildLinkedList( + input: number[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "BuildLinkedList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LinkedList + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async BuildTree( + input: BinaryNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "BuildTree", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Tree + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ClassThatPointsToRecursiveClassThroughAlias( + cls: ClassToRecAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ClassThatPointsToRecursiveClassThroughAlias", + { + "cls": cls + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassToRecAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ClassifyDynEnumTwo( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<(string | DynEnumTwo)> { + try { + const raw = await this.runtime.callFunction( + "ClassifyDynEnumTwo", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (string | DynEnumTwo) + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ClassifyMessage( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ClassifyMessage", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ClassifyMessage2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ClassifyMessage2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ClassifyMessage3( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ClassifyMessage3", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async Completion( + prefix: string,suffix: string,language: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "Completion", + { + "prefix": prefix,"suffix": suffix,"language": language + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async CustomTask( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "CustomTask", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as BookOrder | FlightConfirmation | GroceryReceipt + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DescribeImage( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DescribeImage", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DescribeImage2( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DescribeImage2", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DescribeImage3( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DescribeImage3", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DescribeImage4( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DescribeImage4", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DifferentiateUnions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DifferentiateUnions", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OriginalA | OriginalB + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DummyOutputFunction( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DummyOutputFunction", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DummyOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DynamicFunc( + input: DynamicClassOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DynamicFunc", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynamicClassTwo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DynamicInputOutput( + input: DynInputOutput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DynamicInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynInputOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async DynamicListInputOutput( + input: DynInputOutput[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "DynamicListInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynInputOutput[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExpectFailure( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExpectFailure", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractContactInfo( + document: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractContactInfo", + { + "document": document + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ContactInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractHobby( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<(string | Hobby)[]> { + try { + const raw = await this.runtime.callFunction( + "ExtractHobby", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (string | Hobby)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractNames( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractNames", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractPeople( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractPeople", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Person[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractReceiptInfo( + email: string,reason: "curiosity" | "personal_finance", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractReceiptInfo", + { + "email": email,"reason": reason + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ReceiptInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractResume( + resume: string,img?: Image | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractResume", + { + "resume": resume,"img": img?? null + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Resume + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ExtractResume2( + resume: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ExtractResume2", + { + "resume": resume + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Resume + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnClassOptionalOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnClassOptionalOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassOptionalOutput | null + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnClassOptionalOutput2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnClassOptionalOutput2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassOptionalOutput2 | null + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnEnumListOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnEnumListOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as EnumOutput[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnEnumOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as EnumOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnLiteralClassInputOutput( + input: LiteralClassHello, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnLiteralClassInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LiteralClassHello + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnLiteralUnionClassInputOutput( + input: LiteralClassOne | LiteralClassTwo, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnLiteralUnionClassInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LiteralClassOne | LiteralClassTwo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnNamedArgsSingleStringOptional( + myString?: string | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnNamedArgsSingleStringOptional", + { + "myString": myString?? null + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputBool", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as boolean + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputClass( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputClass", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestOutputClass + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputClassList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputClassList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestOutputClass[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputClassNested( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputClassNested", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassNested + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputClassWithEnum( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputClassWithEnum", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassWithEnum + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputInt", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputLiteralBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputLiteralBool", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as false + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputLiteralInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<5> { + try { + const raw = await this.runtime.callFunction( + "FnOutputLiteralInt", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as 5 + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputLiteralString( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<"example output"> { + try { + const raw = await this.runtime.callFunction( + "FnOutputLiteralString", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as "example output" + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnOutputStringList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnOutputStringList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnTestAliasedEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnTestAliasedEnumOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestEnum + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnTestClassAlias( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnTestClassAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async FnTestNamedArgsSingleEnum( + myArg: NamedArgsSingleEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "FnTestNamedArgsSingleEnum", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async GetDataType( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "GetDataType", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RaysData + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async GetOrderInfo( + email: Email, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "GetOrderInfo", + { + "email": email + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OrderInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async GetQuery( + query: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "GetQuery", + { + "query": query + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as SearchParams + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async InOutEnumMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise>> { + try { + const raw = await this.runtime.callFunction( + "InOutEnumMapKey", + { + "i1": i1,"i2": i2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async InOutLiteralStringUnionMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise>> { + try { + const raw = await this.runtime.callFunction( + "InOutLiteralStringUnionMapKey", + { + "i1": i1,"i2": i2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async InOutSingleLiteralStringMapKey( + m: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise>> { + try { + const raw = await this.runtime.callFunction( + "InOutSingleLiteralStringMapKey", + { + "m": m + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async JsonTypeAliasCycle( + input: JsonValue, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "JsonTypeAliasCycle", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as JsonValue + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async LiteralUnionsTest( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<1 | true | "string output"> { + try { + const raw = await this.runtime.callFunction( + "LiteralUnionsTest", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as 1 | true | "string output" + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MakeBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "MakeBlockConstraint", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MakeNestedBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "MakeNestedBlockConstraint", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as NestedBlockConstraint + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MakeSemanticContainer( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "MakeSemanticContainer", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as SemanticContainer + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MapAlias( + m: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "MapAlias", + { + "m": m + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MergeAliasAttributes( + money: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "MergeAliasAttributes", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as MergeAttrs + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async MyFunc( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "MyFunc", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynamicOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async NestedAlias( + c: number | string | boolean | number | string[] | Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "NestedAlias", + { + "c": c + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number | string | boolean | number | string[] | Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async NullLiteralClassHello( + s: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "NullLiteralClassHello", + { + "s": s + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassForNullLiteral + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async OptionalTest_Function( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<(OptionalTest_ReturnType | null)[]> { + try { + const raw = await this.runtime.callFunction( + "OptionalTest_Function", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (OptionalTest_ReturnType | null)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PredictAge( + name: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PredictAge", + { + "name": name + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as FooAny + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PredictAgeBare( + inp: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "PredictAgeBare", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PrimitiveAlias( + p: number | string | boolean | number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PrimitiveAlias", + { + "p": p + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number | string | boolean | number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestClaude( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestClaude", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestClaudeChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestClaudeChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestClaudeChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestClaudeChatNoSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestOpenAI", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestOpenAIChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestOpenAIChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestOpenAIChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestOpenAIChatNoSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async PromptTestStreaming( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "PromptTestStreaming", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async RecursiveAliasCycle( + input: RecAliasOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "RecursiveAliasCycle", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecAliasOne + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async RecursiveClassWithAliasIndirection( + cls: NodeWithAliasIndirection, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "RecursiveClassWithAliasIndirection", + { + "cls": cls + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as NodeWithAliasIndirection + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ReturnAliasWithMergedAttributes( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "ReturnAliasWithMergedAttributes", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ReturnFailingAssert( + inp: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ReturnFailingAssert", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async ReturnMalformedConstraints( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "ReturnMalformedConstraints", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as MalformedConstraints + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async SchemaDescriptions( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "SchemaDescriptions", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Schema + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async SimpleRecursiveListAlias( + input: RecursiveListAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "SimpleRecursiveListAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveListAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async SimpleRecursiveMapAlias( + input: RecursiveMapAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "SimpleRecursiveMapAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveMapAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async StreamBigNumbers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "StreamBigNumbers", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as BigNumbers + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async StreamFailingAssertion( + theme: string,length: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "StreamFailingAssertion", + { + "theme": theme,"length": length + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TwoStoriesOneTitle + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async StreamOneBigNumber( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "StreamOneBigNumber", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async StreamUnionIntegers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise<(number | string)[]> { + try { + const raw = await this.runtime.callFunction( + "StreamUnionIntegers", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (number | string)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async StreamingCompoundNumbers( + digits: number,yapping: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "StreamingCompoundNumbers", + { + "digits": digits,"yapping": yapping + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as CompoundBigNumbers + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TakeRecAliasDep( + input: RecursiveAliasDependency, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TakeRecAliasDep", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveAliasDependency + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAnthropic( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAnthropic", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAnthropicShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAnthropicShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAws( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAws", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAwsInvalidAccessKey( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAwsInvalidAccessKey", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAwsInvalidProfile( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAwsInvalidProfile", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAwsInvalidRegion( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAwsInvalidRegion", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAwsInvalidSessionToken( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAwsInvalidSessionToken", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzure", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzureFailure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzureFailure", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzureO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzureO1NoMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzureO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzureO1WithMaxCompletionTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzureO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzureO1WithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestAzureWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestAzureWithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestCaching( + input: string,not_cached: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestCaching", + { + "input": input,"not_cached": not_cached + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFallbackClient", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFallbackToShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFallbackToShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleBool( + myBool: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleBool", + { + "myBool": myBool + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleClass( + myArg: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleClass", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleEnumList( + myArg: NamedArgsSingleEnumList[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleEnumList", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleFloat( + myFloat: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleFloat", + { + "myFloat": myFloat + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleInt( + myInt: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleInt", + { + "myInt": myInt + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleMapStringToClass( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleMapStringToClass", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleMapStringToMap( + myMap: Record>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise>> { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleMapStringToMap", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleMapStringToString( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise> { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleMapStringToString", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleString( + myString: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleString", + { + "myString": myString + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleStringArray( + myStringArray: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleStringArray", + { + "myStringArray": myStringArray + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestFnNamedArgsSingleStringList( + myArg: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestFnNamedArgsSingleStringList", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestGemini( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestGemini", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestGeminiOpenAiGeneric( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestGeminiOpenAiGeneric", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestGeminiSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestGeminiSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestGeminiSystemAsChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestGeminiSystemAsChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestImageInput( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestImageInput", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestImageInputAnthropic( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestImageInputAnthropic", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestImageListInput( + imgs: Image[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestImageListInput", + { + "imgs": imgs + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestMemory( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestMemory", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestMemoryOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestMulticlassNamedArgs( + myArg: NamedArgsSingleClass,myArg2: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestMulticlassNamedArgs", + { + "myArg": myArg,"myArg2": myArg2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestNamedArgsLiteralBool( + myBool: true, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestNamedArgsLiteralBool", + { + "myBool": myBool + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestNamedArgsLiteralInt( + myInt: 1, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestNamedArgsLiteralInt", + { + "myInt": myInt + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestNamedArgsLiteralString( + myString: "My String", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestNamedArgsLiteralString", + { + "myString": myString + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOllama( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOllama", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAI", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAILegacyProvider( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAILegacyProvider", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIO1NoMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIO1WithMaxCompletionTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIO1WithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIWithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestOpenAIWithNullMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestOpenAIWithNullMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestRetryConstant( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestRetryConstant", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestRetryExponential( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestRetryExponential", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestSingleFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestSingleFallbackClient", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestUniverseQuestion( + question: UniverseQuestionInput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestUniverseQuestion", + { + "question": question + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as UniverseQuestion + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestVertex( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestVertex", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async TestVertexWithSystemInstructions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "TestVertexWithSystemInstructions", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async UnionTest_Function( + input: string | boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "UnionTest_Function", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as UnionTest_ReturnType + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async UseBlockConstraint( + inp: BlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "UseBlockConstraint", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async UseMalformedConstraints( + a: MalformedConstraints2, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "UseMalformedConstraints", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + async UseNestedBlockConstraint( + inp: NestedBlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Promise { + try { + const raw = await this.runtime.callFunction( + "UseNestedBlockConstraint", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + +} + +class BamlStreamClient { + constructor(private runtime: BamlRuntime, private ctx_manager: BamlCtxManager) {} + + + AaaSamOutputFormat( + recipe: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AaaSamOutputFormat", + { + "recipe": recipe + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.Recipe => a, + (a): a is Recipe => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasThatPointsToRecursiveType( + list: LinkedListAliasNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasThatPointsToRecursiveType", + { + "list": list + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.LinkedListAliasNode => a, + (a): a is LinkedListAliasNode => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasWithMultipleAttrs( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream, Checked> { + try { + const raw = this.runtime.streamFunction( + "AliasWithMultipleAttrs", + { + "money": money + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream, Checked>( + raw, + (a): a is Checked => a, + (a): a is Checked => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasedInputClass( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasedInputClass", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasedInputClass2( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasedInputClass2", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasedInputClassNested( + input: InputClassNested, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasedInputClassNested", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasedInputEnum( + input: AliasedEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasedInputEnum", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AliasedInputList( + input: AliasedEnum[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AliasedInputList", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AllowedOptionals( + optionals: OptionalListAndMap, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AllowedOptionals", + { + "optionals": optionals + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.OptionalListAndMap => a, + (a): a is OptionalListAndMap => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AssertFn( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AssertFn", + { + "a": a + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + AudioInput( + aud: Audio, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "AudioInput", + { + "aud": aud + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + BuildLinkedList( + input: number[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "BuildLinkedList", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.LinkedList => a, + (a): a is LinkedList => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + BuildTree( + input: BinaryNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "BuildTree", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.Tree => a, + (a): a is Tree => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ClassThatPointsToRecursiveClassThroughAlias( + cls: ClassToRecAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ClassThatPointsToRecursiveClassThroughAlias", + { + "cls": cls + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.ClassToRecAlias => a, + (a): a is ClassToRecAlias => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ClassifyDynEnumTwo( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(string | DynEnumTwo), (string | DynEnumTwo)> { + try { + const raw = this.runtime.streamFunction( + "ClassifyDynEnumTwo", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(string | DynEnumTwo), (string | DynEnumTwo)>( + raw, + (a): a is (string | DynEnumTwo) => a, + (a): a is (string | DynEnumTwo) => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ClassifyMessage( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ClassifyMessage", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is types.Category => a, + (a): a is Category => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ClassifyMessage2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ClassifyMessage2", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is types.Category => a, + (a): a is Category => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ClassifyMessage3( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ClassifyMessage3", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is types.Category => a, + (a): a is Category => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + Completion( + prefix: string,suffix: string,language: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "Completion", + { + "prefix": prefix,"suffix": suffix,"language": language + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + CustomTask( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.BookOrder | null) | (partial_types.FlightConfirmation | null) | (partial_types.GroceryReceipt | null)), BookOrder | FlightConfirmation | GroceryReceipt> { + try { + const raw = this.runtime.streamFunction( + "CustomTask", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.BookOrder | null) | (partial_types.FlightConfirmation | null) | (partial_types.GroceryReceipt | null)), BookOrder | FlightConfirmation | GroceryReceipt>( + raw, + (a): a is ((partial_types.BookOrder | null) | (partial_types.FlightConfirmation | null) | (partial_types.GroceryReceipt | null)) => a, + (a): a is BookOrder | FlightConfirmation | GroceryReceipt => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DescribeImage( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DescribeImage", + { + "img": img + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DescribeImage2( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DescribeImage2", + { + "classWithImage": classWithImage,"img2": img2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DescribeImage3( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DescribeImage3", + { + "classWithImage": classWithImage,"img2": img2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DescribeImage4( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DescribeImage4", + { + "classWithImage": classWithImage,"img2": img2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DifferentiateUnions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.OriginalA | null) | (partial_types.OriginalB | null)), OriginalA | OriginalB> { + try { + const raw = this.runtime.streamFunction( + "DifferentiateUnions", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.OriginalA | null) | (partial_types.OriginalB | null)), OriginalA | OriginalB>( + raw, + (a): a is ((partial_types.OriginalA | null) | (partial_types.OriginalB | null)) => a, + (a): a is OriginalA | OriginalB => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DummyOutputFunction( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DummyOutputFunction", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.DummyOutput => a, + (a): a is DummyOutput => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DynamicFunc( + input: DynamicClassOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DynamicFunc", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.DynamicClassTwo => a, + (a): a is DynamicClassTwo => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DynamicInputOutput( + input: DynInputOutput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "DynamicInputOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.DynInputOutput => a, + (a): a is DynInputOutput => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + DynamicListInputOutput( + input: DynInputOutput[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(partial_types.DynInputOutput | null)[], DynInputOutput[]> { + try { + const raw = this.runtime.streamFunction( + "DynamicListInputOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(partial_types.DynInputOutput | null)[], DynInputOutput[]>( + raw, + (a): a is (partial_types.DynInputOutput | null)[] => a, + (a): a is DynInputOutput[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExpectFailure( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ExpectFailure", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractContactInfo( + document: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ExtractContactInfo", + { + "document": document + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.ContactInfo => a, + (a): a is ContactInfo => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractHobby( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(string | Hobby | null)[], (string | Hobby)[]> { + try { + const raw = this.runtime.streamFunction( + "ExtractHobby", + { + "text": text + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(string | Hobby | null)[], (string | Hobby)[]>( + raw, + (a): a is (string | Hobby | null)[] => a, + (a): a is (string | Hobby)[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractNames( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(string | null)[], string[]> { + try { + const raw = this.runtime.streamFunction( + "ExtractNames", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(string | null)[], string[]>( + raw, + (a): a is (string | null)[] => a, + (a): a is string[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractPeople( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(partial_types.Person | null)[], Person[]> { + try { + const raw = this.runtime.streamFunction( + "ExtractPeople", + { + "text": text + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(partial_types.Person | null)[], Person[]>( + raw, + (a): a is (partial_types.Person | null)[] => a, + (a): a is Person[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractReceiptInfo( + email: string,reason: "curiosity" | "personal_finance", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ExtractReceiptInfo", + { + "email": email,"reason": reason + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.ReceiptInfo => a, + (a): a is ReceiptInfo => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractResume( + resume: string,img?: Image | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ExtractResume", + { + "resume": resume,"img": img ?? null + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.Resume => a, + (a): a is Resume => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ExtractResume2( + resume: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ExtractResume2", + { + "resume": resume + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.Resume => a, + (a): a is Resume => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnClassOptionalOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.ClassOptionalOutput | null) | null), ClassOptionalOutput | null> { + try { + const raw = this.runtime.streamFunction( + "FnClassOptionalOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.ClassOptionalOutput | null) | null), ClassOptionalOutput | null>( + raw, + (a): a is ((partial_types.ClassOptionalOutput | null) | null) => a, + (a): a is ClassOptionalOutput | null => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnClassOptionalOutput2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.ClassOptionalOutput2 | null) | null), ClassOptionalOutput2 | null> { + try { + const raw = this.runtime.streamFunction( + "FnClassOptionalOutput2", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.ClassOptionalOutput2 | null) | null), ClassOptionalOutput2 | null>( + raw, + (a): a is ((partial_types.ClassOptionalOutput2 | null) | null) => a, + (a): a is ClassOptionalOutput2 | null => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnEnumListOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(EnumOutput | null)[], EnumOutput[]> { + try { + const raw = this.runtime.streamFunction( + "FnEnumListOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(EnumOutput | null)[], EnumOutput[]>( + raw, + (a): a is (EnumOutput | null)[] => a, + (a): a is EnumOutput[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnEnumOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is types.EnumOutput => a, + (a): a is EnumOutput => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnLiteralClassInputOutput( + input: LiteralClassHello, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnLiteralClassInputOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.LiteralClassHello => a, + (a): a is LiteralClassHello => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnLiteralUnionClassInputOutput( + input: LiteralClassOne | LiteralClassTwo, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.LiteralClassOne | null) | (partial_types.LiteralClassTwo | null)), LiteralClassOne | LiteralClassTwo> { + try { + const raw = this.runtime.streamFunction( + "FnLiteralUnionClassInputOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.LiteralClassOne | null) | (partial_types.LiteralClassTwo | null)), LiteralClassOne | LiteralClassTwo>( + raw, + (a): a is ((partial_types.LiteralClassOne | null) | (partial_types.LiteralClassTwo | null)) => a, + (a): a is LiteralClassOne | LiteralClassTwo => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnNamedArgsSingleStringOptional( + myString?: string | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnNamedArgsSingleStringOptional", + { + "myString": myString ?? null + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputBool", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is boolean => a, + (a): a is boolean => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputClass( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputClass", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TestOutputClass => a, + (a): a is TestOutputClass => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputClassList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(partial_types.TestOutputClass | null)[], TestOutputClass[]> { + try { + const raw = this.runtime.streamFunction( + "FnOutputClassList", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(partial_types.TestOutputClass | null)[], TestOutputClass[]>( + raw, + (a): a is (partial_types.TestOutputClass | null)[] => a, + (a): a is TestOutputClass[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputClassNested( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputClassNested", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TestClassNested => a, + (a): a is TestClassNested => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputClassWithEnum( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputClassWithEnum", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TestClassWithEnum => a, + (a): a is TestClassWithEnum => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputInt", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputLiteralBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnOutputLiteralBool", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is false => a, + (a): a is false => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputLiteralInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<5, 5> { + try { + const raw = this.runtime.streamFunction( + "FnOutputLiteralInt", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<5, 5>( + raw, + (a): a is 5 => a, + (a): a is 5 => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputLiteralString( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<"example output", "example output"> { + try { + const raw = this.runtime.streamFunction( + "FnOutputLiteralString", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<"example output", "example output">( + raw, + (a): a is "example output" => a, + (a): a is "example output" => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnOutputStringList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(string | null)[], string[]> { + try { + const raw = this.runtime.streamFunction( + "FnOutputStringList", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(string | null)[], string[]>( + raw, + (a): a is (string | null)[] => a, + (a): a is string[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnTestAliasedEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnTestAliasedEnumOutput", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is types.TestEnum => a, + (a): a is TestEnum => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnTestClassAlias( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnTestClassAlias", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TestClassAlias => a, + (a): a is TestClassAlias => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + FnTestNamedArgsSingleEnum( + myArg: NamedArgsSingleEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "FnTestNamedArgsSingleEnum", + { + "myArg": myArg + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + GetDataType( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "GetDataType", + { + "text": text + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.RaysData => a, + (a): a is RaysData => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + GetOrderInfo( + email: Email, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "GetOrderInfo", + { + "email": email + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.OrderInfo => a, + (a): a is OrderInfo => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + GetQuery( + query: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "GetQuery", + { + "query": query + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.SearchParams => a, + (a): a is SearchParams => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + InOutEnumMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record ), Partial>> { + try { + const raw = this.runtime.streamFunction( + "InOutEnumMapKey", + { + "i1": i1,"i2": i2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record ), Partial>>( + raw, + (a): a is (Record ) => a, + (a): a is Partial> => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + InOutLiteralStringUnionMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record<"one" | "two" | "three" | "four", (string | null)> ), Partial>> { + try { + const raw = this.runtime.streamFunction( + "InOutLiteralStringUnionMapKey", + { + "i1": i1,"i2": i2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record<"one" | "two" | "three" | "four", (string | null)> ), Partial>>( + raw, + (a): a is (Record<"one" | "two" | "three" | "four", (string | null)> ) => a, + (a): a is Partial> => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + InOutSingleLiteralStringMapKey( + m: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record<"key", (string | null)> ), Partial>> { + try { + const raw = this.runtime.streamFunction( + "InOutSingleLiteralStringMapKey", + { + "m": m + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record<"key", (string | null)> ), Partial>>( + raw, + (a): a is (Record<"key", (string | null)> ) => a, + (a): a is Partial> => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + JsonTypeAliasCycle( + input: JsonValue, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "JsonTypeAliasCycle", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is JsonValue => a, + (a): a is JsonValue => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + LiteralUnionsTest( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(1 | true | "string output"), 1 | true | "string output"> { + try { + const raw = this.runtime.streamFunction( + "LiteralUnionsTest", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(1 | true | "string output"), 1 | true | "string output">( + raw, + (a): a is (1 | true | "string output") => a, + (a): a is 1 | true | "string output" => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MakeBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream, Checked> { + try { + const raw = this.runtime.streamFunction( + "MakeBlockConstraint", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream, Checked>( + raw, + (a): a is Checked => a, + (a): a is Checked => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MakeNestedBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "MakeNestedBlockConstraint", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.NestedBlockConstraint => a, + (a): a is NestedBlockConstraint => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MakeSemanticContainer( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "MakeSemanticContainer", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.SemanticContainer => a, + (a): a is SemanticContainer => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MapAlias( + m: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record ), Record> { + try { + const raw = this.runtime.streamFunction( + "MapAlias", + { + "m": m + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record ), Record>( + raw, + (a): a is (Record ) => a, + (a): a is Record => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MergeAliasAttributes( + money: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "MergeAliasAttributes", + { + "money": money + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.MergeAttrs => a, + (a): a is MergeAttrs => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + MyFunc( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "MyFunc", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.DynamicOutput => a, + (a): a is DynamicOutput => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + NestedAlias( + c: number | string | boolean | number | string[] | Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(((number | null) | (string | null) | (boolean | null) | (number | null) | null) | (string | null)[] | (Record | null)), number | string | boolean | number | string[] | Record> { + try { + const raw = this.runtime.streamFunction( + "NestedAlias", + { + "c": c + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(((number | null) | (string | null) | (boolean | null) | (number | null) | null) | (string | null)[] | (Record | null)), number | string | boolean | number | string[] | Record>( + raw, + (a): a is (((number | null) | (string | null) | (boolean | null) | (number | null) | null) | (string | null)[] | (Record | null)) => a, + (a): a is number | string | boolean | number | string[] | Record => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + NullLiteralClassHello( + s: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "NullLiteralClassHello", + { + "s": s + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.ClassForNullLiteral => a, + (a): a is ClassForNullLiteral => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + OptionalTest_Function( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((partial_types.OptionalTest_ReturnType | null) | null)[], (OptionalTest_ReturnType | null)[]> { + try { + const raw = this.runtime.streamFunction( + "OptionalTest_Function", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((partial_types.OptionalTest_ReturnType | null) | null)[], (OptionalTest_ReturnType | null)[]>( + raw, + (a): a is ((partial_types.OptionalTest_ReturnType | null) | null)[] => a, + (a): a is (OptionalTest_ReturnType | null)[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PredictAge( + name: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PredictAge", + { + "name": name + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.FooAny => a, + (a): a is FooAny => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PredictAgeBare( + inp: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream, Checked> { + try { + const raw = this.runtime.streamFunction( + "PredictAgeBare", + { + "inp": inp + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream, Checked>( + raw, + (a): a is Checked => a, + (a): a is Checked => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PrimitiveAlias( + p: number | string | boolean | number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((number | null) | (string | null) | (boolean | null) | (number | null)), number | string | boolean | number> { + try { + const raw = this.runtime.streamFunction( + "PrimitiveAlias", + { + "p": p + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((number | null) | (string | null) | (boolean | null) | (number | null)), number | string | boolean | number>( + raw, + (a): a is ((number | null) | (string | null) | (boolean | null) | (number | null)) => a, + (a): a is number | string | boolean | number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestClaude( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestClaude", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestClaudeChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestClaudeChat", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestClaudeChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestClaudeChatNoSystem", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestOpenAI", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestOpenAIChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestOpenAIChat", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestOpenAIChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestOpenAIChatNoSystem", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + PromptTestStreaming( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "PromptTestStreaming", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + RecursiveAliasCycle( + input: RecAliasOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "RecursiveAliasCycle", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is RecAliasOne => a, + (a): a is RecAliasOne => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + RecursiveClassWithAliasIndirection( + cls: NodeWithAliasIndirection, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "RecursiveClassWithAliasIndirection", + { + "cls": cls + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.NodeWithAliasIndirection => a, + (a): a is NodeWithAliasIndirection => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ReturnAliasWithMergedAttributes( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream, Checked> { + try { + const raw = this.runtime.streamFunction( + "ReturnAliasWithMergedAttributes", + { + "money": money + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream, Checked>( + raw, + (a): a is Checked => a, + (a): a is Checked => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ReturnFailingAssert( + inp: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ReturnFailingAssert", + { + "inp": inp + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + ReturnMalformedConstraints( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "ReturnMalformedConstraints", + { + "a": a + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.MalformedConstraints => a, + (a): a is MalformedConstraints => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + SchemaDescriptions( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "SchemaDescriptions", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.Schema => a, + (a): a is Schema => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + SimpleRecursiveListAlias( + input: RecursiveListAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "SimpleRecursiveListAlias", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is RecursiveListAlias => a, + (a): a is RecursiveListAlias => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + SimpleRecursiveMapAlias( + input: RecursiveMapAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "SimpleRecursiveMapAlias", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is RecursiveMapAlias => a, + (a): a is RecursiveMapAlias => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + StreamBigNumbers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "StreamBigNumbers", + { + "digits": digits + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.BigNumbers => a, + (a): a is BigNumbers => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + StreamFailingAssertion( + theme: string,length: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "StreamFailingAssertion", + { + "theme": theme,"length": length + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TwoStoriesOneTitle => a, + (a): a is TwoStoriesOneTitle => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + StreamOneBigNumber( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "StreamOneBigNumber", + { + "digits": digits + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + StreamUnionIntegers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<((number | null) | (string | null) | null)[], (number | string)[]> { + try { + const raw = this.runtime.streamFunction( + "StreamUnionIntegers", + { + "digits": digits + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<((number | null) | (string | null) | null)[], (number | string)[]>( + raw, + (a): a is ((number | null) | (string | null) | null)[] => a, + (a): a is (number | string)[] => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + StreamingCompoundNumbers( + digits: number,yapping: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "StreamingCompoundNumbers", + { + "digits": digits,"yapping": yapping + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.CompoundBigNumbers => a, + (a): a is CompoundBigNumbers => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TakeRecAliasDep( + input: RecursiveAliasDependency, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TakeRecAliasDep", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.RecursiveAliasDependency => a, + (a): a is RecursiveAliasDependency => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAnthropic( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAnthropic", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAnthropicShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAnthropicShorthand", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAws( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAws", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAwsInvalidAccessKey( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAwsInvalidAccessKey", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAwsInvalidProfile( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAwsInvalidProfile", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAwsInvalidRegion( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAwsInvalidRegion", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAwsInvalidSessionToken( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAwsInvalidSessionToken", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzure", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzureFailure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzureFailure", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzureO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzureO1NoMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzureO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzureO1WithMaxCompletionTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzureO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzureO1WithMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestAzureWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestAzureWithMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestCaching( + input: string,not_cached: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestCaching", + { + "input": input,"not_cached": not_cached + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFallbackClient", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFallbackToShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFallbackToShorthand", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleBool( + myBool: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleBool", + { + "myBool": myBool + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleClass( + myArg: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleClass", + { + "myArg": myArg + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleEnumList( + myArg: NamedArgsSingleEnumList[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleEnumList", + { + "myArg": myArg + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleFloat( + myFloat: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleFloat", + { + "myFloat": myFloat + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleInt( + myInt: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleInt", + { + "myInt": myInt + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleMapStringToClass( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record ), Record> { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleMapStringToClass", + { + "myMap": myMap + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record ), Record>( + raw, + (a): a is (Record ) => a, + (a): a is Record => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleMapStringToMap( + myMap: Record>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record | null)> ), Record>> { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleMapStringToMap", + { + "myMap": myMap + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record | null)> ), Record>>( + raw, + (a): a is (Record | null)> ) => a, + (a): a is Record> => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleMapStringToString( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream<(Record ), Record> { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleMapStringToString", + { + "myMap": myMap + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream<(Record ), Record>( + raw, + (a): a is (Record ) => a, + (a): a is Record => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleString( + myString: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleString", + { + "myString": myString + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleStringArray( + myStringArray: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleStringArray", + { + "myStringArray": myStringArray + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestFnNamedArgsSingleStringList( + myArg: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestFnNamedArgsSingleStringList", + { + "myArg": myArg + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestGemini( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestGemini", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestGeminiOpenAiGeneric( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestGeminiOpenAiGeneric", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestGeminiSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestGeminiSystem", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestGeminiSystemAsChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestGeminiSystemAsChat", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestImageInput( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestImageInput", + { + "img": img + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestImageInputAnthropic( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestImageInputAnthropic", + { + "img": img + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestImageListInput( + imgs: Image[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestImageListInput", + { + "imgs": imgs + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestMemory( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestMemory", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.TestMemoryOutput => a, + (a): a is TestMemoryOutput => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestMulticlassNamedArgs( + myArg: NamedArgsSingleClass,myArg2: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestMulticlassNamedArgs", + { + "myArg": myArg,"myArg2": myArg2 + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestNamedArgsLiteralBool( + myBool: true, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestNamedArgsLiteralBool", + { + "myBool": myBool + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestNamedArgsLiteralInt( + myInt: 1, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestNamedArgsLiteralInt", + { + "myInt": myInt + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestNamedArgsLiteralString( + myString: "My String", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestNamedArgsLiteralString", + { + "myString": myString + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOllama( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOllama", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAI", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAILegacyProvider( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAILegacyProvider", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIO1NoMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIO1WithMaxCompletionTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIO1WithMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIShorthand", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIWithMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestOpenAIWithNullMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestOpenAIWithNullMaxTokens", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestRetryConstant( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestRetryConstant", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestRetryExponential( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestRetryExponential", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestSingleFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestSingleFallbackClient", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestUniverseQuestion( + question: UniverseQuestionInput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestUniverseQuestion", + { + "question": question + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.UniverseQuestion => a, + (a): a is UniverseQuestion => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestVertex( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestVertex", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + TestVertexWithSystemInstructions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "TestVertexWithSystemInstructions", + { + + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is string => a, + (a): a is string => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + UnionTest_Function( + input: string | boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "UnionTest_Function", + { + "input": input + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is partial_types.UnionTest_ReturnType => a, + (a): a is UnionTest_ReturnType => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + UseBlockConstraint( + inp: BlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "UseBlockConstraint", + { + "inp": inp + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + UseMalformedConstraints( + a: MalformedConstraints2, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "UseMalformedConstraints", + { + "a": a + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + + UseNestedBlockConstraint( + inp: NestedBlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BamlStream { + try { + const raw = this.runtime.streamFunction( + "UseNestedBlockConstraint", + { + "inp": inp + }, + undefined, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return new BamlStream( + raw, + (a): a is number => a, + (a): a is number => a, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + ) + } catch (error) { + if (error instanceof Error) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } + } + throw error; + } + } + +} + +export const b = new BamlAsyncClient(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) \ No newline at end of file diff --git a/integ-tests/react/baml_client/globals.ts b/integ-tests/react/baml_client/globals.ts new file mode 100644 index 000000000..00b093019 --- /dev/null +++ b/integ-tests/react/baml_client/globals.ts @@ -0,0 +1,37 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { BamlCtxManager, BamlRuntime } from '@boundaryml/baml' +import { getBamlFiles } from './inlinedbaml' + + +export const DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME = BamlRuntime.fromFiles( + 'baml_src', + getBamlFiles(), + process.env +) +export const DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX = new BamlCtxManager(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME) + + +export function resetBamlEnvVars(envVars: Record) { + if (DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.allowResets()) { + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME.reset('baml_src', getBamlFiles(), envVars) + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.reset() + } else { + throw new Error('BamlError: Cannot reset BAML environment variables while there are active BAML contexts.') + } +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/index.ts b/integ-tests/react/baml_client/index.ts new file mode 100644 index 000000000..93f196339 --- /dev/null +++ b/integ-tests/react/baml_client/index.ts @@ -0,0 +1,25 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code + +export { b } from "./async_client" + +export * from "./types" +export type { partial_types } from "./partial_types" +export * from "./tracing" +export { resetBamlEnvVars } from "./globals" +export { BamlValidationError } from "@boundaryml/baml" \ No newline at end of file diff --git a/integ-tests/react/baml_client/inlinedbaml.ts b/integ-tests/react/baml_client/inlinedbaml.ts new file mode 100644 index 000000000..39013d7f2 --- /dev/null +++ b/integ-tests/react/baml_client/inlinedbaml.ts @@ -0,0 +1,116 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +const fileMap = { + + "clients.baml": "retry_policy Bar {\n max_retries 3\n strategy {\n type exponential_backoff\n }\n}\n\nretry_policy Foo {\n max_retries 3\n strategy {\n type constant_delay\n delay_ms 100\n }\n}\n\nclient GPT4 {\n provider openai\n options {\n model gpt-4o\n api_key env.OPENAI_API_KEY\n }\n}\n\n\nclient GPT4o {\n provider openai\n options {\n model gpt-4o\n api_key env.OPENAI_API_KEY\n }\n}\n\n\nclient GPT4Turbo {\n retry_policy Bar\n provider openai\n options {\n model gpt-4-turbo\n api_key env.OPENAI_API_KEY\n }\n}\n\nretry_policy GPT4oRetry {\n max_retries 2\n strategy {\n type exponential_backoff\n }\n}\n\nclient GPT35 {\n provider openai\n retry_policy GPT4oRetry\n options {\n model \"gpt-4o-mini\"\n api_key env.OPENAI_API_KEY\n }\n}\n\nclient GPT35LegacyProvider {\n provider openai\n options {\n model \"gpt-3.5-turbo\"\n api_key env.OPENAI_API_KEY\n }\n}\n\n\nclient Ollama {\n provider ollama\n options {\n model llama2\n }\n}\n\nclient GPT35Azure {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml\"\n deployment_id \"gpt-35-turbo-default\"\n // base_url \"https://west-us-azure-baml.openai.azure.com/openai/deployments/gpt-35-turbo-default\"\n api_version \"2024-02-01\"\n api_key env.AZURE_OPENAI_API_KEY\n }\n}\n\n// Azure O1 client without max_tokens (should not add default)\nclient AzureO1 {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml\"\n deployment_id \"o1-mini\"\n api_version \"2024-08-01-preview\"\n api_key env.AZURE_OPENAI_API_KEY\n max_tokens null\n }\n}\n\n// Azure O1 client with explicit max_tokens (should keep user value)\nclient AzureO1WithMaxTokens {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml\"\n deployment_id \"o1-mini\"\n api_version \"2024-08-01-preview\"\n api_key env.AZURE_OPENAI_API_KEY\n max_tokens 1000\n }\n}\n\nclient AzureO1WithMaxCompletionTokens {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml\"\n deployment_id \"o1-mini\"\n api_version \"2024-08-01-preview\"\n api_key env.AZURE_OPENAI_API_KEY\n max_completion_tokens 1000\n }\n}\n\n// Azure GPT-35 client with explicit max_tokens (should keep user value)\nclient GPT35AzureWithMaxTokens {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml\"\n deployment_id \"gpt-35-turbo-default\"\n api_version \"2024-02-01\"\n api_key env.AZURE_OPENAI_API_KEY\n max_tokens 1000\n }\n}\n\n// Azure client with invalid resource name (for testing failures)\nclient GPT35AzureFailed {\n provider azure-openai\n options {\n resource_name \"west-us-azure-baml-incorrect-suffix\"\n deployment_id \"gpt-35-turbo-default\"\n api_key env.AZURE_OPENAI_API_KEY\n }\n}\n\nclient Gemini {\n provider google-ai\n options {\n model gemini-1.5-pro-001\n api_key env.GOOGLE_API_KEY\n safetySettings {\n category HARM_CATEGORY_HATE_SPEECH\n threshold BLOCK_LOW_AND_ABOVE\n }\n }\n}\n\nclient GeminiOpenAiGeneric {\n provider \"openai-generic\"\n options {\n base_url \"https://generativelanguage.googleapis.com/v1beta/\"\n model \"gemini-1.5-flash\"\n api_key env.GOOGLE_API_KEY\n }\n}\n\nclient Vertex {\n provider vertex-ai\n options {\n model gemini-1.5-pro\n location us-central1\n credentials env.INTEG_TESTS_GOOGLE_APPLICATION_CREDENTIALS_CONTENT\n }\n}\n\n\nclient AwsBedrock {\n provider aws-bedrock\n options {\n inference_configuration {\n max_tokens 100\n }\n // model \"anthropic.claude-3-5-sonnet-20240620-v1:0\"\n // model_id \"anthropic.claude-3-haiku-20240307-v1:0\"\n model \"meta.llama3-8b-instruct-v1:0\"\n // region \"us-east-1\"\n // access_key_id env.AWS_ACCESS_KEY_ID\n // secret_access_key env.AWS_SECRET_ACCESS_KEY\n // session_token env.AWS_SESSION_TOKEN\n // session_token null\n // model_id \"mistral.mistral-7b-instruct-v0:2\"\n }\n}\n\nclient AwsBedrockInvalidRegion {\n provider aws-bedrock\n options {\n region \"us-invalid-7\"\n inference_configuration {\n max_tokens 100\n }\n // model \"anthropic.claude-3-5-sonnet-20240620-v1:0\"\n // model_id \"anthropic.claude-3-haiku-20240307-v1:0\"\n model_id \"meta.llama3-8b-instruct-v1:0\"\n // model_id \"mistral.mistral-7b-instruct-v0:2\"\n }\n}\n\nclient AwsBedrockInvalidAccessKey {\n provider aws-bedrock\n options {\n model_id \"meta.llama3-8b-instruct-v1:0\"\n access_key_id \"AKIAINVALID12345678\"\n secret_access_key \"abcdef1234567890abcdef1234567890abcdef12\"\n inference_configuration {\n max_tokens 100\n }\n }\n}\n\nclient AwsBedrockInvalidProfile {\n provider aws-bedrock\n options {\n model_id \"meta.llama3-8b-instruct-v1:0\"\n profile \"invalid-profile\"\n inference_configuration {\n max_tokens 100\n }\n }\n}\n\nclient AwsBedrockInvalidSessionToken {\n provider aws-bedrock\n options {\n model_id \"meta.llama3-8b-instruct-v1:0\"\n region \"us-east-1\"\n access_key_id \"AKIAINVALID12345678\"\n secret_access_key \"abcdef1234567890abcdef1234567890abcdef12\"\n session_token \"invalid-session-token\"\n inference_configuration {\n max_tokens 100\n }\n }\n}\n\n\nclient Invalid{\n provider aws-bedrock\n options {\n model_id \"meta.llama3-8b-instruct-v1:0\"\n region \"us-east-1\"\n access_key_id \"AKIAINVALID12345678\"\n secret_access_key \"abcdef1234567890abcdef1234567890abcdef12\"\n session_token \"invalid-session-token\"\n inference_configuration {\n max_tokens 100\n }\n }\n}\n\nclient Sonnet {\n provider anthropic\n options {\n model claude-3-5-sonnet-20241022\n api_key env.ANTHROPIC_API_KEY\n }\n}\n\nclient Claude {\n provider anthropic\n options {\n model claude-3-haiku-20240307\n api_key env.ANTHROPIC_API_KEY\n max_tokens 1000\n }\n}\n\nclient ClaudeWithCaching {\n provider anthropic\n options {\n model claude-3-haiku-20240307\n api_key env.ANTHROPIC_API_KEY\n max_tokens 500\n allowed_role_metadata [\"cache_control\"]\n headers {\n \"anthropic-beta\" \"prompt-caching-2024-07-31\"\n }\n }\n}\n\nclient Resilient_SimpleSyntax {\n retry_policy Foo\n provider baml-fallback\n options {\n strategy [\n GPT4Turbo\n GPT35\n Lottery_SimpleSyntax\n ]\n }\n}\n\nclient Lottery_SimpleSyntax {\n provider baml-round-robin\n options {\n start 0\n strategy [\n GPT35\n Claude\n ]\n }\n}\n\nclient TogetherAi {\n provider \"openai-generic\"\n options {\n base_url \"https://api.together.ai/v1\"\n api_key env.TOGETHER_API_KEY\n model \"meta-llama/Llama-3-70b-chat-hf\"\n }\n}\n\n// OpenAI O1 client without max_tokens (should not add default)\nclient OpenAIO1 {\n provider openai\n options {\n model \"o1-mini\"\n api_key env.OPENAI_API_KEY\n }\n}\n\n// OpenAI O1 client with explicit max_tokens (should fail)\nclient OpenAIO1WithMaxTokens {\n provider openai\n options {\n model \"o1-mini\"\n api_key env.OPENAI_API_KEY\n max_tokens 1000\n }\n}\n\n// OpenAI O1 client with explicit max_completion_tokens\nclient OpenAIO1WithMaxCompletionTokens {\n provider openai\n options {\n model \"o1-mini\"\n api_key env.OPENAI_API_KEY\n max_completion_tokens 1000\n }\n}\n\n// OpenAI GPT-4 client with explicit max_tokens\nclient GPT4WithMaxTokens {\n provider openai\n options {\n model \"gpt-4\"\n api_key env.OPENAI_API_KEY\n max_tokens 1000\n }\n}\n", + "custom-task.baml": "class BookOrder {\n orderId string @description(#\"\n The ID of the book order\n \"#)\n title string @description(#\"\n The title of the ordered book\n \"#)\n quantity int @description(#\"\n The quantity of books ordered\n \"#)\n price float @description(#\"\n The price of the book\n \"#)\n}\n\nclass FlightConfirmation {\n confirmationNumber string @description(#\"\n The flight confirmation number\n \"#)\n flightNumber string @description(#\"\n The flight number\n \"#)\n departureTime string @description(#\"\n The scheduled departure time of the flight\n \"#)\n arrivalTime string @description(#\"\n The scheduled arrival time of the flight\n \"#)\n seatNumber string @description(#\"\n The seat number assigned on the flight\n \"#)\n}\n\nclass GroceryReceipt {\n receiptId string @description(#\"\n The ID of the grocery receipt\n \"#)\n storeName string @description(#\"\n The name of the grocery store\n \"#)\n items (string | int | float)[] @description(#\"\n A list of items purchased. Each item consists of a name, quantity, and price.\n \"#)\n totalAmount float @description(#\"\n The total amount spent on groceries\n \"#)\n}\n\nclass CustomTaskResult {\n bookOrder BookOrder | null\n flightConfirmation FlightConfirmation | null\n groceryReceipt GroceryReceipt | null\n}\n\nfunction CustomTask(input: string) -> BookOrder | FlightConfirmation | GroceryReceipt {\n client \"openai/gpt-4o-mini\"\n prompt #\"\n Given the input string, extract either an order for a book, a flight confirmation, or a grocery receipt.\n\n {{ ctx.output_format }}\n\n Input:\n \n {{ input}}\n \"#\n}\n\ntest CustomTask {\n functions [CustomTask]\n args {\n input #\"\nDear [Your Name],\n\nThank you for booking with [Airline Name]! We are pleased to confirm your upcoming flight.\n\nFlight Confirmation Details:\n\nBooking Reference: ABC123\nPassenger Name: [Your Name]\nFlight Number: XY789\nDeparture Date: September 15, 2024\nDeparture Time: 10:30 AM\nArrival Time: 1:45 PM\nDeparture Airport: John F. Kennedy International Airport (JFK), New York, NY\nArrival Airport: Los Angeles International Airport (LAX), Los Angeles, CA\nSeat Number: 12A\nClass: Economy\nBaggage Allowance:\n\nChecked Baggage: 1 piece, up to 23 kg\nCarry-On Baggage: 1 piece, up to 7 kg\nImportant Information:\n\nPlease arrive at the airport at least 2 hours before your scheduled departure.\nCheck-in online via our website or mobile app to save time at the airport.\nEnsure that your identification documents are up to date and match the name on your booking.\nContact Us:\n\nIf you have any questions or need to make changes to your booking, please contact our customer service team at 1-800-123-4567 or email us at support@[airline].com.\n\nWe wish you a pleasant journey and thank you for choosing [Airline Name].\n\nBest regards,\n\n[Airline Name] Customer Service\n \"#\n }\n}", + "fiddle-examples/chain-of-thought.baml": "class Email {\n subject string\n body string\n from_address string\n}\n\nenum OrderStatus {\n ORDERED\n SHIPPED\n DELIVERED\n CANCELLED\n}\n\nclass OrderInfo {\n order_status OrderStatus\n tracking_number string?\n estimated_arrival_date string?\n}\n\nfunction GetOrderInfo(email: Email) -> OrderInfo {\n client GPT4\n prompt #\"\n Given the email below:\n\n ```\n from: {{email.from_address}}\n Email Subject: {{email.subject}}\n Email Body: {{email.body}}\n ```\n\n Extract this info from the email in JSON format:\n {{ ctx.output_format }}\n\n Before you output the JSON, please explain your\n reasoning step-by-step. Here is an example on how to do this:\n 'If we think step by step we can see that ...\n therefore the output JSON is:\n {\n ... the json schema ...\n }'\n \"#\n}", + "fiddle-examples/chat-roles.baml": "// This will be available as an enum in your Python and Typescript code.\nenum Category2 {\n Refund\n CancelOrder\n TechnicalSupport\n AccountIssue\n Question\n}\n\nfunction ClassifyMessage2(input: string) -> Category {\n client GPT4\n\n prompt #\"\n {{ _.role(\"system\") }}\n // You can use _.role(\"system\") to indicate that this text should be a system message\n\n Classify the following INPUT into ONE\n of the following categories:\n\n {{ ctx.output_format }}\n\n {{ _.role(\"user\") }}\n // And _.role(\"user\") to indicate that this text should be a user message\n\n INPUT: {{ input }}\n\n Response:\n \"#\n}", + "fiddle-examples/classify-message.baml": "// This will be available as an enum in your Python and Typescript code.\nenum Category {\n Refund\n CancelOrder\n TechnicalSupport\n AccountIssue\n Question\n}\n\nfunction ClassifyMessage(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", + "fiddle-examples/extract-names.baml": "function ExtractNames(input: string) -> string[] {\n client GPT4\n prompt #\"\n Extract the names from this INPUT:\n \n INPUT:\n ---\n {{ input }}\n ---\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}\n", + "fiddle-examples/extract-receipt-info.baml": "class ReceiptItem {\n name string\n description string?\n quantity int\n price float\n}\n\nclass ReceiptInfo {\n items ReceiptItem[]\n total_cost float?\n venue \"barisa\" | \"ox_burger\"\n}\n\nfunction ExtractReceiptInfo(email: string, reason: \"curiosity\" | \"personal_finance\") -> ReceiptInfo {\n client GPT4o\n prompt #\"\n Given the receipt below:\n\n ```\n {{email}}\n ```\n\n {{ ctx.output_format }}\n \"#\n}\n\n", + "fiddle-examples/images/image.baml": "function DescribeImage(img: image) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n\n Describe the image below in 20 words:\n {{ img }}\n \"#\n\n}\n\nclass FakeImage {\n url string\n}\n\nclass ClassWithImage {\n myImage image\n param2 string\n fake_image FakeImage\n}\n\n// chat role user present\nfunction DescribeImage2(classWithImage: ClassWithImage, img2: image) -> string { \n client GPT4Turbo\n prompt #\"\n {{ _.role(\"user\") }}\n You should return 2 answers that answer the following commands.\n\n 1. Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n 2. Also tell me what's happening here in one sentence:\n {{ img2 }}\n \"#\n}\n\n// no chat role\nfunction DescribeImage3(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\n\n// system prompt and chat prompt\nfunction DescribeImage4(classWithImage: ClassWithImage, img2: image) -> string {\n client GPT4Turbo\n prompt #\"\n {{ _.role(\"system\")}}\n\n Describe this in 5 words:\n {{ classWithImage.myImage }}\n\n Tell me also what's happening here in one sentence and relate it to the word {{ classWithImage.param2 }}:\n {{ img2 }}\n \"#\n}\n\ntest TestName {\n functions [DescribeImage]\n args {\n img { url \"https://imgs.xkcd.com/comics/standards.png\"}\n }\n}\n", + "fiddle-examples/symbol-tuning.baml": "enum Category3 {\n Refund @alias(\"k1\")\n @description(\"Customer wants to refund a product\")\n\n CancelOrder @alias(\"k2\")\n @description(\"Customer wants to cancel an order\")\n\n TechnicalSupport @alias(\"k3\")\n @description(\"Customer needs help with a technical issue unrelated to account creation or login\")\n\n AccountIssue @alias(\"k4\")\n @description(\"Specifically relates to account-login or account-creation\")\n\n Question @alias(\"k5\")\n @description(\"Customer has a question\")\n}\n\nfunction ClassifyMessage3(input: string) -> Category {\n client GPT4\n\n prompt #\"\n Classify the following INPUT into ONE\n of the following categories:\n\n INPUT: {{ input }}\n\n {{ ctx.output_format }}\n\n Response:\n \"#\n}", + "formatter/test-comments.baml": "class FormatterTest0 {\n lorem string // trailing comments should be preserved\n ipsum string\n}\n\nclass FormatterTest1 {\n lorem string\n ipsum string\n // dolor string\n}\n\nclass FormatterTest2 {\n // \"lorem\" is a latin word\n lorem string\n // \"ipsum\" is a latin word\n ipsum string\n}\n\nclass FormatterTest3 {\n lorem string\n ipsum string\n // Lorem ipsum dolor sit amet\n // Consectetur adipiscing elit\n // Sed do eiusmod tempor incididunt\n // Ut labore et dolore magna aliqua\n // Ut enim ad minim veniam\n}", + "generators.baml": "generator lang_python {\n output_type python/pydantic\n output_dir \"../python\"\n version \"0.74.0\"\n}\n\ngenerator lang_typescript {\n output_type typescript\n output_dir \"../typescript\"\n version \"0.74.0\"\n}\n\ngenerator lang_typescript_react {\n output_type typescript/react\n output_dir \"../react\"\n version \"0.74.0\"\n}\n\ngenerator lang_ruby {\n output_type ruby/sorbet\n output_dir \"../ruby\"\n version \"0.74.0\"\n}\n\ngenerator openapi {\n output_type rest/openapi\n output_dir \"../openapi\"\n version \"0.74.0\"\n on_generate \"rm .gitignore\"\n}", + "test-files/aliases/aliased-inputs.baml": "\nclass InputClass {\n key string @alias(\"color\")\n key2 string\n}\n\n\nclass InputClassNested {\n key string\n nested InputClass @alias(\"interesting-key\")\n}\n \n\nfunction AliasedInputClass(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {{input}}\n\n This is a test. What's the name of the first json key above? Remember, tell me the key, not value.\n \"#\n}\n \nfunction AliasedInputClass2(input: InputClass) -> string {\n client GPT35\n prompt #\"\n\n {# making sure we can still access the original key #}\n {%if input.key == \"tiger\"%}\n Repeat this value back to me, and nothing else: {{input.key}}\n {%endif%}\n \"#\n}\n \n function AliasedInputClassNested(input: InputClassNested) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n\n {{input}}\n\n This is a test. What's the name of the second json key above? Remember, tell me the key, not value.\n \"#\n }\n\n\nenum AliasedEnum {\n KEY_ONE @alias(\"tiger\")\n KEY_TWO\n}\n\nfunction AliasedInputEnum(input: AliasedEnum) -> string {\n client GPT4o\n prompt #\"\n {{ _.role(\"user\")}}\n\n\n Write out this word only in your response, in lowercase:\n ---\n {{input}}\n ---\n Answer:\n \"#\n}\n\n\nfunction AliasedInputList(input: AliasedEnum[]) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\")}}\n Given this array:\n ---\n {{input}}\n ---\n\n Return the first element in the array:\n \"#\n}\n\n", + "test-files/aliases/classes.baml": "class TestClassAlias {\n key string @alias(\"key-dash\") @description(#\"\n This is a description for key\n af asdf\n \"#)\n key2 string @alias(\"key21\")\n key3 string @alias(\"key with space\")\n key4 string //unaliased\n key5 string @alias(\"key.with.punctuation/123\")\n}\n\nfunction FnTestClassAlias(input: string) -> TestClassAlias {\n client GPT35\n prompt #\"\n {{ctx.output_format}}\n \"#\n}\n\ntest FnTestClassAlias {\n functions [FnTestClassAlias]\n args {\n input \"example input\"\n }\n}\n", + "test-files/aliases/enums.baml": "enum TestEnum {\n A @alias(\"k1\") @description(#\"\n User is angry\n \"#)\n B @alias(\"k22\") @description(#\"\n User is happy\n \"#)\n // tests whether k1 doesnt incorrectly get matched with k11\n C @alias(\"k11\") @description(#\"\n User is sad\n \"#)\n D @alias(\"k44\") @description(\n User is confused\n )\n E @description(\n User is excited\n )\n F @alias(\"k5\") // only alias\n \n G @alias(\"k6\") @description(#\"\n User is bored\n With a long description\n \"#)\n \n @@alias(\"Category\")\n}\n\nfunction FnTestAliasedEnumOutput(input: string) -> TestEnum {\n client GPT35\n prompt #\"\n Classify the user input into the following category\n \n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{input}}\n\n {{ _.role('assistant') }}\n Category ID:\n \"#\n}\n\ntest FnTestAliasedEnumOutput {\n functions [FnTestAliasedEnumOutput]\n args {\n input \"mehhhhh\"\n }\n}", + "test-files/comments/comments.baml": "// add some functions, classes, enums etc with comments all over.", + "test-files/constraints/constraints.baml": "// These classes and functions test several properties of\n// constrains:\n//\n// - The ability for constrains on fields to pass or fail.\n// - The ability for constraints on bare args and return types to pass or fail.\n// - The ability of constraints to influence which variant of a union is chosen\n// by the parser, when the structure is not sufficient to decide.\n\n/// A Martian organism with an age.\n/// Such a nice type.\nclass Martian {\n /// The age of the Martian in Mars years.\n /// So many Mars years.\n age int @check(young_enough, {{ this < 30 }})\n}\n\nclass Earthling {\n age int @check(earth_aged, {{this < 200 and this > 0}}) @check(no_infants, {{this >1}})\n}\n\n\nclass FooAny {\n planetary_age Martian | Earthling\n certainty int @check(unreasonably_certain, {{this == 102931}})\n species string @check(trivial, {{this == \"Homo sapiens\"}}) @check(regex_good, {{this|regex_match(\"Homo\")}}) @check(regex_bad, {{this|regex_match(\"neanderthalensis\")}})\n}\n\n\nfunction PredictAge(name: string) -> FooAny {\n client GPT35\n prompt #\"\n Using your understanding of the historical popularity\n of names, predict the age of a person with the name\n {{ name }} in years. Also predict their genus and\n species. It's Homo sapiens (with exactly that spelling\n and capitalization). I'll give you a hint: If the name\n is \"Greg\", his age is 41.\n\n {{ctx.output_format}}\n \"#\n}\n\n\nfunction PredictAgeBare(inp: string @assert(big_enough, {{this|length > 1}})) -> int @check(too_big, {{this == 10102}}) {\n client GPT35\n prompt #\"\n Using your understanding of the historical popularity\n of names, predict the age of a person with the name\n {{ inp.name }} in years. Also predict their genus and\n species. It's Homo sapiens (with exactly that spelling).\n\n {{ctx.output_format}}\n \"#\n}\n\nfunction ReturnFailingAssert(inp: int @assert(small_int, {{this < 10}})) -> int @assert(big_int, {{this > 100}}) {\n client GPT35\n prompt #\"\n Return the next integer after {{ inp }}.\n\n {{ctx.output_format}}\n \"#\n}\n\nclass TwoStoriesOneTitle {\n title string\n story_a string @assert(too_long_story, {{this|length > 1000000}} )\n story_b string @assert(too_long_story, {{this|length > 1000000}} )\n}\n\nfunction StreamFailingAssertion(theme: string, length: int) -> TwoStoriesOneTitle {\n client GPT35\n prompt #\"\n Tell me two different stories along the theme of {{ theme }} with the same title.\n Please make each about {{ length }} words long.\n {{ctx.output_format}}\n \"#\n}\n\nclass BlockConstraint {\n foo int\n bar string\n @@check(cross_field, {{ this.bar|length > this.foo }})\n}\n\nfunction MakeBlockConstraint() -> BlockConstraint {\n client GPT35\n prompt #\"\n Generate an output in the following schema with a short string and a large int.\n\n {{ ctx.output_format }}\n \"#\n}\n\nclass NestedBlockConstraint {\n nbc BlockConstraint\n}\n\nclass BlockConstraintForParam {\n bcfp int\n bcfp2 string\n @@assert(hi, {{ this.bcfp2|length < this.bcfp }})\n}\n\nclass NestedBlockConstraintForParam {\n nbcfp BlockConstraintForParam\n}\n\nfunction MakeNestedBlockConstraint() -> NestedBlockConstraint {\n client GPT35\n prompt #\"Generate an output where the inner foo is 1 and the inner bar is \"hello\".\n {{ ctx.output_format }}\n \"#\n}\n\nfunction UseBlockConstraint(inp: BlockConstraintForParam) -> int {\n client GPT35\n prompt #\"\n Generate 3\n {{ ctx.output_format }}\n \"#\n}\n\nfunction UseNestedBlockConstraint(inp: NestedBlockConstraintForParam) -> int {\n client GPT35\n prompt #\"\n Generate 3\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/constraints/contact-info.baml": "class PhoneNumber {\n value string @assert(valid_phone_number, {{this|regex_match(\"\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}\")}})\n}\n\nclass EmailAddress {\n value string @assert(valid_email, {{this|regex_match(\"^[_]*([a-z0-9]+(\\.|_*)?)+@([a-z][a-z0-9-]+(\\.|-*\\.))+[a-z]{2,6}$\")}})\n}\n\nclass ContactInfo {\n primary PhoneNumber | EmailAddress\n secondary (PhoneNumber | EmailAddress)?\n}\n\nfunction ExtractContactInfo(document: string) -> ContactInfo {\n client GPT35\n prompt #\"\n Extract a primary contact info, and if possible a secondary contact\n info, from this document:\n\n {{ document }}\n\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/constraints/malformed-constraints.baml": "class MalformedConstraints {\n foo int @check(foo_check, {{ this.length() > 0 }})\n}\n\nclass MalformedConstraints2 {\n foo int @assert(foo_check, {{ this.length() > 0 }})\n}\n\nfunction ReturnMalformedConstraints(a: int) -> MalformedConstraints {\n client GPT35\n prompt #\"\n Return the integer after {{ a }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction UseMalformedConstraints(a: MalformedConstraints2) -> int {\n client GPT35\n prompt #\"\n Return the integer after {{ a.foo }}\n\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/descriptions/descriptions.baml": "\nclass Nested {\n prop3 string | null @description(#\"\n write \"three\"\n \"#)\n prop4 string | null @description(#\"\n write \"four\"\n \"#) @alias(\"blah\")\n prop20 Nested2\n}\n\nclass Nested2 {\n prop11 string | null @description(#\"\n write \"three\"\n \"#)\n prop12 string | null @description(#\"\n write \"four\"\n \"#) @alias(\"blah\")\n}\n\nclass Schema {\n prop1 string | null @description(#\"\n write \"one\"\n \"#)\n prop2 Nested | string @description(#\"\n write \"two\"\n \"#)\n prop5 (string | null)[] @description(#\"\n write \"hi\"\n \"#)\n prop6 string | Nested[] @alias(\"blah\") @description(#\"\n write the string \"blah\" regardless of the other types here\n \"#)\n nested_attrs (string | null | Nested)[] @description(#\"\n write the string \"nested\" regardless of other types\n \"#)\n parens (string | null) @description(#\"\n write \"parens1\"\n \"#)\n other_group (string | (int | string)) @description(#\"\n write \"other\"\n \"#) @alias(other)\n}\n\n\nfunction SchemaDescriptions(input: string) -> Schema {\n client GPT4o\n prompt #\"\n Return a schema with this format:\n\n {{ctx.output_format}}\n \"#\n}", + "test-files/dynamic/client-registry.baml": "// Intentionally use a bad key\nclient BadClient {\n provider openai\n options {\n model \"gpt-3.5-turbo\"\n api_key \"sk-invalid\"\n }\n}\n\nfunction ExpectFailure() -> string {\n client BadClient\n\n prompt #\"\n What is the capital of England?\n \"#\n}\n", + "test-files/dynamic/differentiate_unions.baml": "class OriginalA {\n value int\n}\n\nclass OriginalB {\n value int\n @@dynamic\n}\n\nfunction DifferentiateUnions() -> OriginalA | OriginalB {\n client \"openai/gpt-4o-mini\"\n prompt #\"\n Create a data model that represents the latter of the two classes.\n\n {{ ctx.output_format }}\n \"#\n}", + "test-files/dynamic/dynamic.baml": "class DynamicClassOne {\n @@dynamic\n}\n\nenum DynEnumOne {\n @@dynamic\n}\n\nenum DynEnumTwo {\n @@dynamic\n}\n\nclass SomeClassNestedDynamic {\n hi string\n @@dynamic\n\n}\n\nclass DynamicClassTwo {\n hi string\n some_class SomeClassNestedDynamic\n status DynEnumOne\n @@dynamic\n}\n\nfunction DynamicFunc(input: DynamicClassOne) -> DynamicClassTwo {\n client GPT35\n prompt #\"\n Please extract the schema from \n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nclass DynInputOutput {\n testKey string\n @@dynamic\n}\n\nfunction DynamicInputOutput(input: DynInputOutput) -> DynInputOutput {\n client GPT35\n prompt #\"\n Here is some input data:\n ----\n {{ input }}\n ----\n\n Extract the information.\n {{ ctx.output_format }}\n \"#\n}\n\nfunction DynamicListInputOutput(input: DynInputOutput[]) -> DynInputOutput[] {\n client GPT35\n prompt #\"\n Here is some input data:\n ----\n {{ input }}\n ----\n\n Extract the information.\n {{ ctx.output_format }}\n \"#\n}\n\n\n\nclass DynamicOutput {\n @@dynamic\n}\n \nfunction MyFunc(input: string) -> DynamicOutput {\n client GPT35\n prompt #\"\n Given a string, extract info using the schema:\n\n {{ input}}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction ClassifyDynEnumTwo(input: string) -> DynEnumTwo {\n client GPT35\n prompt #\"\n Given a string, extract info using the schema:\n\n {{ input}}\n\n {{ ctx.output_format }}\n \"#\n}", + "test-files/functions/input/named-args/single/named-audio.baml": "function AudioInput(aud: audio) -> string{\n client Gemini\n prompt #\"\n {{ _.role(\"user\") }}\n\n Does this sound like a roar? Yes or no? One word no other characters.\n \n {{ aud }}\n \"#\n}\n\n\ntest TestURLAudioInput{\n functions [AudioInput]\n args {\n aud{ \n url https://actions.google.com/sounds/v1/emergency/beeper_emergency_call.ogg\n }\n } \n}\n\n\n", + "test-files/functions/input/named-args/single/named-boolean.baml": "\n\nfunction TestFnNamedArgsSingleBool(myBool: bool) -> string{\n client GPT35\n prompt #\"\n Return this value back to me: {{myBool}}\n \"#\n}\n\ntest TestFnNamedArgsSingleBool {\n functions [TestFnNamedArgsSingleBool]\n args {\n myBool true\n }\n}", + "test-files/functions/input/named-args/single/named-class-list.baml": "\n\n\nfunction TestFnNamedArgsSingleStringList(myArg: string[]) -> string{\n client GPT35\n prompt #\"\n Return this value back to me: {{myArg}}\n \"#\n}\n\ntest TestFnNamedArgsSingleStringList {\n functions [TestFnNamedArgsSingleStringList]\n args {\n myArg [\"hello\", \"world\"]\n }\n}", + "test-files/functions/input/named-args/single/named-class-literal-prop.baml": "class LiteralClassHello {\n prop \"hello\"\n}\n\nfunction FnLiteralClassInputOutput(input: LiteralClassHello) -> LiteralClassHello {\n client GPT4\n prompt #\"\n Return the same object you were given.\n {{ ctx.output_format }}\n \"#\n}", + "test-files/functions/input/named-args/single/named-class-literal-union-prop.baml": "class LiteralClassOne {\n prop \"one\"\n}\n\nclass LiteralClassTwo {\n prop \"two\"\n}\n\nfunction FnLiteralUnionClassInputOutput(input: LiteralClassOne | LiteralClassTwo) -> LiteralClassOne | LiteralClassTwo {\n client GPT4\n prompt #\"\n Return the same object you were given.\n {{ ctx.output_format }}\n\n {{ _.role('user') }}\n {{ input }}\n \"#\n}\n", + "test-files/functions/input/named-args/single/named-class.baml": "class NamedArgsSingleClass {\n key string\n key_two bool\n key_three int\n // TODO: doesn't work with keys with numbers\n // key2 bool\n // key3 int\n}\n\nfunction TestFnNamedArgsSingleClass(myArg: NamedArgsSingleClass) -> string {\n client GPT35\n prompt #\"\n Print these values back to me:\n {{myArg.key}}\n {{myArg.key_two}}\n {{myArg.key_three}}\n \"#\n}\n\ntest TestFnNamedArgsSingleClass {\n functions [TestFnNamedArgsSingleClass]\n args {\n myArg {\n key \"example\",\n key_two true,\n key_three 42\n }\n }\n}\n\nfunction TestMulticlassNamedArgs(myArg: NamedArgsSingleClass, myArg2: NamedArgsSingleClass) -> string {\n client GPT35\n prompt #\"\n Print these values back to me:\n {{myArg.key}}\n {{myArg.key_two}}\n {{myArg.key_three}}\n {{myArg2.key}}\n {{myArg2.key_two}}\n {{myArg2.key_three}}\n \"#\n}", + "test-files/functions/input/named-args/single/named-enum-list.baml": "enum NamedArgsSingleEnumList {\n ONE\n TWO\n}\n\nfunction TestFnNamedArgsSingleEnumList(myArg: NamedArgsSingleEnumList[]) -> string {\n client GPT35\n prompt #\"\n Print these values back to me:\n {{myArg}}\n \"#\n}\n\ntest TestFnNamedArgsSingleEnumList {\n functions [TestFnNamedArgsSingleEnumList]\n args {\n myArg [ONE, TWO]\n }\n}", + "test-files/functions/input/named-args/single/named-enum.baml": "enum NamedArgsSingleEnum {\n ONE\n TWO\n}\n\nfunction FnTestNamedArgsSingleEnum(myArg: NamedArgsSingleEnum) -> string {\n client GPT35\n prompt #\"\n Print these values back to me:\n {{myArg}}\n \"#\n}\n\ntest FnTestNamedArgsSingleEnum {\n functions [FnTestNamedArgsSingleEnum]\n args {\n myArg ONE\n }\n}", + "test-files/functions/input/named-args/single/named-float.baml": "function TestFnNamedArgsSingleFloat(myFloat: float) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myFloat}}\n \"#\n}\n\ntest TestFnNamedArgsSingleFloat {\n functions [TestFnNamedArgsSingleFloat]\n args {\n myFloat 3.14\n }\n}\n", + "test-files/functions/input/named-args/single/named-image-list.baml": "function TestImageListInput(imgs: image[]) -> string{\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n What colors do these have in common? {{imgs}}\n \"#\n}\n\ntest TestImageListInput {\n functions [TestImageListInput]\n args {\n imgs [\n {\n media_type \"image/png\"\n url \"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png\"\n },\n {\n url \"https://upload.wikimedia.org/wikipedia/en/4/4d/Shrek_%28character%29.png\"\n }\n ]\n }\n}\n", + "test-files/functions/input/named-args/single/named-image.baml": "function TestImageInput(img: image) -> string{\n client GPT4o\n prompt #\"\n {{ _.role(\"user\") }}\n\n Describe this in 4 words. One word must be the color {{img}}\n \"#\n}\n\n\nfunction TestImageInputAnthropic(img: image) -> string{\n client Claude\n prompt #\"\n {{ _.role(\"user\") }}\n\n Describe this in 4 words {{img}}\n \"#\n}\n\ntest image_url_with_media_type {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n media_type \"image/jpeg\"\n // url gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.png\n\n url \"https://www.pbs.org/wnet/nature/files/2023/11/Odontodactylus_scyllarus_Re%CC%81union-e1699977649790.jpg\"\n }\n }\n}\n\ntest image_url_without_media_type {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n url \"https://upload.wikimedia.org/wikipedia/en/4/4d/Shrek_%28character%29.png\"\n }\n }\n}\ntest image_file {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n file \"/Users/sam/mantis-shrimp.jpg\"\n // file \"Łukasiewicz.jpg\"\n }\n }\n}\n\ntest image_file_abspath {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n // curl -L -o ~/mantis-shrimp.jpg \"https://www.pbs.org/wnet/nature/files/2023/11/Odontodactylus_scyllarus_Re%CC%81union-e1699977649790.jpg\"\n file \"/Users/sam/mantis-shrimp.jpg\"\n }\n }\n}\n\ntest image_file_nonexistent {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n file \"does-not-exist.png\"\n }\n }\n}\n\ntest image_file_explicit_media_type {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n file \"Łukasiewicz.jpg\"\n media_type \"image/jpeg\"\n }\n }\n}\n\ntest image_base64 {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n base64 iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=\n media_type \"image/png\"\n }\n }\n}\n\ntest image_base64_no_media_type {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n base64 iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=\n }\n }\n}\n\ntest image_base64_data_url {\n functions [TestImageInput, TestImageInputAnthropic]\n args {\n img {\n base64 \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=\"\n }\n }\n}", + "test-files/functions/input/named-args/single/named-int.baml": "// test for int\nfunction TestFnNamedArgsSingleInt(myInt: int) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myInt}}\n \"#\n}\n\ntest TestFnNamedArgsSingleInt {\n functions [TestFnNamedArgsSingleInt]\n args {\n myInt 42\n }\n}\n", + "test-files/functions/input/named-args/single/named-literal-bool.baml": "function TestNamedArgsLiteralBool(myBool: true) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myBool}}\n \"#\n}\n\ntest TestFnNamedArgsLiteralBool {\n functions [TestNamedArgsLiteralBool]\n args {\n myBool true\n }\n}", + "test-files/functions/input/named-args/single/named-literal-int.baml": "function TestNamedArgsLiteralInt(myInt: 1) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myInt}}\n \"#\n}\n\ntest TestFnNamedArgsLiteralInt {\n functions [TestNamedArgsLiteralInt]\n args {\n myInt 1\n }\n}", + "test-files/functions/input/named-args/single/named-literal-string.baml": "function TestNamedArgsLiteralString(myString: \"My String\") -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myString}}\n \"#\n}\n\ntest TestFnNamedArgsLiteralString {\n functions [TestNamedArgsLiteralString]\n args {\n myString \"My String\"\n }\n}", + "test-files/functions/input/named-args/single/named-map-string-to-class.baml": "class StringToClassEntry {\n word string\n}\n// test string\nfunction TestFnNamedArgsSingleMapStringToClass(myMap: map) -> map {\n client GPT35\n prompt #\"\n Return this value back to me: {{myMap}}\n \"#\n}\n\ntest TestFnNamedArgsSingleMapStringToClass {\n functions [TestFnNamedArgsSingleMapStringToClass]\n args {\n myMap {\n \"key\" {\n word \"lorem ipsum\"\n }\n }\n }\n}\n", + "test-files/functions/input/named-args/single/named-map-string-to-map.baml": "// test string\nfunction TestFnNamedArgsSingleMapStringToMap(myMap: map>) -> map> {\n client GPT35\n prompt #\"\n Return this value back to me: {{myMap}}\n \"#\n}\n\ntest TestFnNamedArgsSingleMapStringToMap {\n functions [TestFnNamedArgsSingleMapStringToMap]\n args {\n myMap {\n \"outer-key\" {\n \"key\" \"example string\"\n }\n }\n }\n}", + "test-files/functions/input/named-args/single/named-map-string-to-string.baml": "// test string\nfunction TestFnNamedArgsSingleMapStringToString(myMap: map) -> map {\n client GPT35\n prompt #\"\n Return this value back to me: {{myMap}}\n \"#\n}\n\ntest TestFnNamedArgsSingleMapStringToString {\n functions [TestFnNamedArgsSingleMapStringToString]\n args {\n myMap {\n \"key\" \"example string\"\n }\n }\n}\n", + "test-files/functions/input/named-args/single/named-string-list.baml": "// string[]\nfunction TestFnNamedArgsSingleStringArray(myStringArray: string[]) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myStringArray}}\n \"#\n}\n\ntest TestFnNamedArgsSingleStringArray {\n functions [TestFnNamedArgsSingleStringArray]\n args {\n myStringArray [\"example1\", \"example2\", \"example3\"]\n }\n}\n", + "test-files/functions/input/named-args/single/named-string-optional.baml": "\n\n // string[]\nfunction FnNamedArgsSingleStringOptional(myString: string?) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myString}}\n \"#\n}\n\ntest FnNamedArgsSingleStringOptional {\n functions [FnNamedArgsSingleStringOptional]\n args {\n myString \"example string\"\n }\n}\n\ntest FnNamedArgsSingleStringOptional2 {\n functions [FnNamedArgsSingleStringOptional]\n args {\n \n }\n}\n", + "test-files/functions/input/named-args/single/named-string.baml": "// test string\nfunction TestFnNamedArgsSingleString(myString: string) -> string {\n client GPT35\n prompt #\"\n Return this value back to me: {{myString}}\n \"#\n}\n\ntest TestFnNamedArgsSingleString {\n functions [TestFnNamedArgsSingleString]\n args {\n myString \"example string\"\n }\n}\n", + "test-files/functions/input/named-args/single/testcase_audio.baml": "test TestAudioInput {\n functions [AudioInput]\n args {\n aud {\n media_type \"audio/mp3\"\n base64 #\"\n //uQZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWGluZwAAAA8AAABRAACbvAACBAgKDQ0QExcZGRweIiQkJyouMTQ0ODs+QkJFSUxPT1NWWl1dYGRna25ucXV4e3t/goaJiYyPkpaWmJyfoqamqq2ws7O3ur3BwcTHy87O0tbZ3eHh5Ofq7e3v8vT29vr7//8AAAA8TEFNRTMuOThyBK8AAAAAAAAAADQgJATvTQABzAAAm7x1lCT3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//twRAAAASMHzuhDEEgnoLnaCGMFC2CpO6wMT2EoDCd1hI00AAAAEQIDYHAsIIQAAEoGVMIIxHu2NU7D//6gx93/////b/rA4AABkADS8C7uaACBBcE4PiDEHG1v///8H4nB8CAgcnAfD/+XeJ//kJECiCQEJfI6HOSeUxLVpnrJo2rNIWOyh0ICisofyinwxQgwhC62QhoOq/VUc83SH50lBBW/zGlu7+rRJASS9aBdydWL4sDQNcGniICjWjQVUyz/r9Svasqk8mh2IEEAAF/3UCwpAWzBRxYSYYCG20kc8DZACBhYYL23pA9szuRYqDCiBhWU248WncakPjwAC//nqPjvVXbWoPCK5RxQpjrEb97tLtAAAAQCp/rY1YKFgEQGMiBKAl8eUUGLqIoKGJ8ymCSMEwbECv/7kGQSAELxHk7rCRtIUwN5zWEjdw641TWtYKfpzSHmqYYV5Tii6JucjDmcIwNidRSd8wROBJyGzaGHgEKFeKnm7nRASdEp9w0vMPKtoFqO0i8msqeRPqJvXWtGr/RegAAAAQf64JA85lKUzT1BLCVKxy3bzsmdNx7sBs/i9VAmPriMqzNVjGmwuiQIBz3xikXxobjFRgiHndkmCCWkzSFpKpQkWj7iK9vZoTq226qlyCgAAAAAK/1mAxhkJhwxggAiPFC86QFrpheGHGVl9CarY31L4s6dty4Uu1ptLBMgt1oI1194JiUBOVS/2DCiqTtsQqB1y7f1e3IvSt7LMcvV1V3nxbVrft1t9tYuR4hXw3i//Y/k/rKdc7774/xl8PzPwUaUb/bAAJf+11ymYAvCQjJBrYY8YCnDgQHRym2vv8v59AIgJeHcj2pdsuqSQRB/XGYAZBZjmcToT75GoqmPEUAc4k3+0t3tqieurldHetVIRirRUdybkWtkvcip8dZb3/jWz7A94WhLxHjLylb6kCt/8D25Xz2hqtgQAAACJ//7oGQDAANlHk1taYAIZgOZray8AQzEeTdZvAABnhJmtzWAAPZIEFDZvQUJMuOAwMwPMyI4BAwqzSXR8EIhNtYNWtp7TH+CgJDcSxKAuSHys6vLviQgE0SzUt/MwOpdg/KWnZpToR+hXxdcxRIW2TD+u8ji46iPZJCHTY6/IMD7TSrE+m7sjEDXs2bAAAAAAn/VwrHMcQxxTHqSGBjZtFl0H0DiVfjo7XX8V8+6fcfQ9DhI2JOQFtnzPpmiHUh6wxrbTfPzPW9PnOs3hbe57ODrvZvT1y765AQ3Ldn1mLQYFlQeKWqb7vfoin7YEY3oFkgQgAYJbTfgAAAAAF7QocrjMWjmvhWQUBEiUwIrMCOTOx0wgJTWHgQRlRgAGJIgGB0uZsK5MYGOIAWsNKa/FUd1lOC1VkM7WoKyNE3Xp2hxCOxV+LFM/UJVxMMikDjPZ3chjr9116cEACAACAALIPwAAAAACJSbr48SeTwAhSRg0hzTjgMBGA40UDARfAoLAIgCjbkv+/g0QDXa112Hf0zRyAKFxWeRa3C8KrdGpQRCl+yKDHem8Got6xG7TTay5czfkMO7J////8v/Wvs7asAAAAA+sjBwaYAQI6mAiwFATV7w2pETXlQyIg0BJhgy4VbIFAdIZ+4sh8kKPinBCNslLIrLvv87MeX4/7aOC48X3Z5jW3E5yL/ruv/7kGQlhEOdHkzXbwAIZaO5muy8AQ1MdzWtPSthgQ7mqMwkfMalWWXs6e/c76CiVNONeXdeTShNm2w+LD3b1Lm9rxUP4FM2YHX//+5UAAAAEfSQJ1u5BM+XAN1Q4DRZJAKDkU90eAug7K0V7OWomGGpQzR2FhQ9Ww1lAptDDLJ4cp1GSnlHG/snkIaFG5SarjEaFuEpE/R0/oiwqboZk0si7dH6ss5bZm8QaagzUYbaVPqgAAAC/1gMOpXWX3AR8u6aAAfRK3QiGGXCoBwqwCPgTA6BMRwB/hmDCE8IKj1Cn2M0Hz1cIaohiEpXR/VT32xIoot89VJd0MLhJ7uXU1IsLZkMjGmb1WPFQM0aEDReiEGT6yVwq5WErD3TToAAF/rAgiMKy4gHC1y0olOVr1QEgpYX2tRNBWlZCRL7MEZYk85Tyz0rCgyacRhAOioFiMG5/8hGxOh2WdL0U3pYox8IqkHxQNrW8qGE0zNsfDaA5a1TFjEFAYShfXV2V1AAAAACB/ZIJBSGoGARQTaeCJc3oDLvgww+hOVYwAcRBWcBZP/7kGQSBGNuG81reEnYZGNpumHpaQ3UbzW1t4Ahd47mtrDwBIAow+wQ4ocu5Sa94y7JMFxouRhUTCImQBWW+kC5dMT3npMnTxzgf8+LQy9YpAAic1oKtYg9lJZ4dnWVoSkeJsXYyqLe60v+n+uswAAAAf7aL1iEwylSsEcaKxP+XTLnFnVDhAOHjYHjGKETkYrIN9VKZdtCXfPFSdKGJo4HqirfSEESQMadz1LQ82UP/paw3WuEFPZcoAoFnvbmTMyQUwVQFxiiinB5DjaDNqj6SkYAAAH1kbghwKOBQ4RAIHNKiTIykQhphYuYQYhQCLrFUhfZFxCUwpPkDKAkCXJihigY1WhyHTKpQqBCTIUTOro3vizPSrdL9+a1nUEDnPUPMJJIi/1m2MoQJZ0udLT7mNRq08YtcOGWOEspV2+/odAA9sDfQhA+feIuAdvjdUAo1RlyAZbsOK7LgypfJ0j/JwrzSXR+oecrKm1yzl1VhYnpqNrl72Y2itMV3+8iXjx4nj7+pwpbPiZiVOgI/EOPYvILYq6eQJ1hj6kKoHKAAP/7oGQBAANzHk1ubwAAc6SZrc3gAA0cezVZvAABnZDmtzWAAAAAAAoD9gagAAAAAKERjdOUDwrIl4QstmvlqCUFcxgyCaibhgKZyLtDMLJDBwAGAIIFAyb7GyhP4BOQ+ghFZnC9QqALnQFJvORIqSORBHCrQV1lyHr/EQWZtHVBD7JWsucivJMZIyWxB37EvZwyAggAAiA8rfQAAAAAZQImH2b4AwOHiUSSzSwExIPNFPgINmPiAhDTASsVFBImCC0GhJedb6xACwuyXpY45cCsHfVHUeaWhEYVjPu0OvNItNOuuRJoH26tanpGBuOjmm7DyFgQqw+LN3+s9///+f//87NLwAAFCa9d+AAAAAACFEyWhHQ0SbKYVNjEyAEE5npCYYAmmiDM27AIhKI0xsJGmAqgT9oaEJB5Ja5mKynicJmj0IMJeK/XPAcN9lyD7TpRt3Ych2AmXEICBTAYDbC5TD3It1JXD7WqbmnRAAAAUQAmQa98AAAAAAUHDlBVpGHHw+QJzzlB0GY8sjmc4qhmTN2sDw4WAjRQKBmaJhl+w5kNFwZS5L6zq9gwjBC4oyB5G25OszkFiBG0gerEezLqzU/ZwQ8XWUKilxrLqOJ3///v5WrEVEgJjEaLqDgAAAAAAChQaqLpglIgnM5INOGLkCE0FSRl15pyysF0eEr3NQIHjbhvnGG5l//7kGQagAL8HlNuawCQbqSZnc3gAA7MdzVdt4Ahig6mt7DwBChprBITCZppqukxkjl4yaDr9tl8pft02TQfq/BMzjHN6vX7eFC/FBRwvvwCgDAAAAAIP+AAAAAAEKiMN7nCIYcsAmASOAgHMSXwSToEDDAkmEAESBQDBA4tIw4NgxQdTtoZhaAINDiECtfRyZSzFBcwQbq/VucbNTv/CEF6WVMsg7UL7CZNcdyAK+daVp3zUs///4X/679uhuAAAAAf6SAIcGQlrg4ICA0NBtB5WMKBhAAu8NBABKDGAcKAaihgQADg4eAkeXEXpYy1SyPMo/Each7TpALQcagTrVGvBbYOG66JktF8aPPM2uFWOG/xWPau8Ji1671OQ1yyVD+84lDCobahNCOVn6K3/2a7a7KVAAAAAAB/rA9LivIDjv+EhdMtmNDBxVkrxUCDjrAJcOS1s/DkSJ0lGfKKlfM5AUSaJZEbBtE2PfcV5FYbR0i56zefDxrTWbI9UN6Pxrz2uNtYbSR7s6kgbbOcWIvG1stdq510AAAAAA/2RhzRhf/7oGQFhWPkL8zrWDn4Z6PJvWXpkwy4dzVNYSfhiw4m6YYZ3IgDEBklMm0+HxJiWUg2ZjgjBj4DFs2B2jNVAE4LLTWBP1mg09VrMZW2zgNTVlbsWrIwrPbWYi544FxEHwKDIQGEUDaigMDg+FhqKCo8/+5iURnop2yvonNlwAPFzSLCyBslQpOfA7e/dw7ugMv9On++yIAAAAAAf2QM5Q8UajjIzTOOZ5OpUjcmdKbl6081lpqIlK/YUn3Qug8L7OFOrkyw6RiI8NENJTKBD2hxHITDYdHSLat9ETZHQyIBftZ5/OFL0IYBSRdQrXbaRnTrt7HWuFJzWrRXhQ3IAABxwEYoMMBwUDMMnNnCNGMByQoeJelYNwSCSHS2fQWWLEf2C0vk90Fl4xGLP67MFS1/nIRXYc06R5yiQCtk4VcRbRrlUjc3ygjH/bIXFtYbemhm5oD1vD5nXk22sTOVcU6VkTniHtlaavByr7NAIQPmU1gJSlFQtygujVInZIjs0EovhKXAlaLpkaDknFpiFBUJ4MCwWeCHhiIkGMpD76khEixY/0Rj7lu9KDAi6EUbX0sQQPOWZLuHe9tss5Gna4lWnQNDmLWEAAAAABb2xhU8QQBYwGsAxIylTOpGo6iHBSgtYJkBjGGcjsXUfAgA9JmqNDzTTadcHyAVpJimLeySXEZhY5NeLLRiUv/7kGQiBGNZHc1rL0rYagPJrWMMHwyEcTWsbSPhcg7maZexXIWnj10Si9ehBqhyw3rJKiz7AmSqVYt09EK5UyTWb4bXpbsUn/6fi7oAAAAAA/sjf9TAqvQFq+FRhH2dChWbycEPPJFY1RQ+sE47LKrbsriD/MgnjA2EtGJR4aCovkxQvMWMgVsKU1ejfTp05m42Jd3f6Hzkz6ouw4LtnyUWjmqT572HWNLtnhx0KLYD7z3X/dVGAgAB/YwJqIFGlxE1X4EwzHCgKByJYUA1DwYBFCYqBMVE1C++4b/q9SdQJOU5TzEaMKgiCIBSQEgSPosu4rwhNpd6TYeJWpCKgaD3rJAodoJxosGylBLGzMKMkxbrbt1L/oZjsAPIwupyKVswiDKmoGOW+uxcjBRAeOdMIcN45SGE9LqnlaLkwsTM8OoLlAjgOHI/jV0bg/2aLl6ZREoYW5QkFUkqI1j/kQ5FnsrOEwi9Yy7voTe3zrUqldu3j9xVvAAAAAAH9tA4PRhMwMNQYTbMpBEY1LlA9QUn4CkaL4fRULbxevIy4aRasf/7kGQVhGL4Hc3rT2IoZiO5rWHsVQyEdzWsPSyhXQ1mtYelHFLnXSyugSEM1XQQRa4s1s7c78eX+t2+xvvO6918hdXX7njnNllKTFJYCqYw+2pVDHIpgSpdkgAAAAf2x45puA+AGOIJhHmfpHQIFgl3QqU4aZfk2TdFkBSYmQ0xFvzaqAyQXB3EVbBLF+YW3dJZ+/Q8U3qseggd+D21GbQzGNOE0rkVMVci04g/UlKYbekiSam6o2R1nkf/7/XEAQABvZI/wYlgwI0wg0CJ7UwMC5Clq+QaYKgViPQJg4SGIk7HFPmir0eiHTwocWAoDZ5qZiGPQMA7rCbqcUXFbE3k58b8lroc0VLXNMyd70XMFH55XT4u7RYy22xtffth/3tlXAEPZJHIBEYC5yyUTFmwUniUIPENIDMrYiIGFAUz1LkpACQOH5HyrkyZkLMKniZvyLwlTJppFvPjB9CP2uLvG1hFw9FVOlVDHcBFdvStL+llHtRstT+ipXAAAAAAB/bAosLGIZJalyyCBON2ioJ538RPIoOa8zvylVQSU5fCZv/7gGQThHLLHc3rDEO4WoOZvWGIaQtUdzesPSqhcg5mkYelFEhEVHeq5yrL5kgMNmMlFHqIbvXSMHoTWS7CTwqhRt/FTSyzXP+n59Y0KgUvlirXP/91TrJIAAAA/tkiTZx0QloANEEBGG8qs3Rs0Ptnai86GE4qHVOQimdryVNjw5dUnril1tdKuhZ6uQrBFSsMIqj1fU8pUducPRC9u0axBy300VJNFrm7EOSTSbs/0VhMABf22GJ4dchKF7CIAXYAlKBoIUI3MWSH2jiYqYcaqYmBFKsuuhF3SY+KiJYgxllDFEtuiZVr/O2fRvR5Abd71Isi7ZKx96VX2aUJYtKepve3OpTfkUsajpiYpQ6suWKn+DlkjkbHQMZTKYeAii+TE6XyQsRMgAcIyJAyxAjXiUJpj0mRGko2hmYTOzW3V7SY2Zpf1Bge4zS9zwhFH2oawi7Hqhaw8oeHL2vbxbV2dWntRdtvm3AQAAAA//ugZAKEQxYczWsPYphmI6mqPwkLDEhzN6xpI2F4D2b1hiWMB/bGYAE2DUgOIquI4JtItJhIrPYIikGPA6UWjSjSpgEFV5CVLki1YXieVqEGmuQrjSUli68YmL+0vdQwf3fG/DN2cHtEZw6xd9dwsmu88lNDHP0mQgmNb1Ftzfp/r8wAAAL/SQ1SsWFTTR3L8kS0qVgxYzqQIpS/7/JkAgJVhICTzJcTQGSdGoSPCh+AqNxOji48SpE4yM4miWNLwkQMhrqQtwx5iYMpSaFkKlh0qZH7HenGyQxIo9AKKW1WoSFvv/rR3xgAABf62BZYYwMMPZMcUAEQeeg4A4ICIL1Qkjwxw1gFbG1ionBQGQwukY0PEJFI0JQoZWaetIshUR1BsnaxlQcI1hUKQ2LfOxe6vuVZh190IVAqZ1t6OBVLxAjYi9SPq7q1RkBgAf6StxJRwCywvI64RV1iECpl2rHRXaVEQeDkSRKK8IZgnQnYOCNkjiPhc3BMkSvyXInLskQIQRMI3SUJDzMHfjR8VLw6jSkpz00qRFDaX/87zn79hV7drW9GxaqIAAAAAAf2MGIYQIHRI4GPCHVHnAHmHJioEaomEChQqj4TA4sr5+lYFtMeiLXWO/YphgEWkQkKEgylZdCyCD1ECsz4iRDAyRBIoCOCrC/psFDo4euoVODbZhGLPCUSmu3N//uAZDCGYzgdTWsaSPhkw9mtZwk5DQh3Naxpg2G2j2a1PCQ8bUJo1/2OcAAAAAAH9sD6tQBIZCSzoatD0JGVUA7AQgLigBeqh6q8CrXXfF1bV6Duti6hdGnN4hJ4WHoowfkjUTNJi4hGFiawphY7JJs9+Z4sLKrehy1OcuZ23OSRAVrBSEFtVFrXUoGj76ZAAPHIb0pDnIId8ROzuvzZai2AybMuOQ2LLlrHIQ7EQlY9COYCAID3eA9pJYuWlg8kepLPlMKYhoJ2qQ1a9hGZlYnlF1YWFy55t/RaE1x1TS5kANLnq9dCrl/6rdeLXLKvCEKfX9WxKHACPbIQoTguo0RLgFmSxsAvZuk/QGUzMFeNyRyeK9HI2vOhDRUYU65YMD4kCpAFRMCYpD4gZQLyRDpMCVIScLjB5c6GA+F2f3HQRYMHi6XNGDD4fqatbGqeXJHbjLshpELybWubMojFieO//jNdAA/sgbOVB7X/+6BkBAdjXRzNG1hJyGajuaMnDA8O5Hc0jHMCoacPJvWEvhTjHDjEoztnzUHyBKDjmMReA6hGptSSWKhS37IGnyRgcXJQuTnAooqIxCLBgVCkvFQbEwuTjBMLB4SBsMp4FAwFwEEDib+A2JwSSpQXcfD+dShLAwUNLYLd9XG1YQMXuatxVaCIAH9kFgO6afg44EVELilQ6ZCtNNTFWoIIvJPaHHbiBABenBJWFtYXRJK4kPGIek0qolLYOCQ27ETSoIZUEcsFYriQXHE5fJBVJL+C2AryRRb0se0wZQ1ROFfgDx7Pih4VEEtY2JnF1QAF5GLRyEYTipFNORYSGBi4DFUIhzkD/C3T0gW+Z1nA4G8WBNYcYIFBCcMPxavMP/EX8iUgdV/pA4jpSd/4nJnDae7cYZJDcSaNBsTb+dht/Je/8amjnDpd4hLtAw4f1rS9ZqbL1NtNkyH3tZNXB8KOFnoQ60P2gAe2BWsAODelflLiNxtUPEGdm1smHYJLOYCRsCZK9bN1lqikpGPCkQkgZeCQJyCxGkJxlWjzWYZyLKuYF0hqHNI6D8VG4ynkL8hrLP7VjAGysm8ReYuGLXuW05UKDVigolLmvN0evWgLqoAAAAA/lgIgkhJAgDBBeY0GGAMgD4QKLmDEBpy2cxzCDyTSGS8Ciar1gi0YhPWEV6OlDmZDWt/pPpr/+5BkHQZzeR7N03l6OGfj2bpjLzkOOHk3TeXqoZ0PJuGNZIRcnmsocpVKXVPEsaSwHNET4txlkgN5SZOpUPnBSIY7ZnX7wfxZ7LYYsQ9H/zS270p/dRzaS3gAAAAf2QQaIyJdig26GI4xYm6aoxwBi8ZMMYRAKHdlPpPOIl2W5iQ8yqMvmRXqxTpNTqC6HrKGMSejF+OckyVMAbgNtJvQci0TIhyo2k2MniNULv9r2aEraZW0yl9s2y19u/m9FWnr0A+sCYqF4CUwYFmNDJ4M4asRmLCRkqecQFHAsJh5AWRASCAk87EeAqapMwgxol3jFaSxJ+G1K1nY2ksBfUPUWWNsQw/iEGahplDlFStoxTKVCqWlcmVmQ910EA0dzqJoVilLJ5Wq1Yr2cgb/e+xNIphukB94DKTmM4MEYzHMRmHJkgJuIHgsOGhQ0WGAygVQDimlNMTGcZ624RSjpZLZg2GX+fKSsAdmG8Ja6LhxtwF6RVkcYThfx/lgHIhuQXpK+SY7I4xR/qFszTvZxvdYdWOu9EgL/obf6cAAAf2AJXD/+6BkA4ZjlB3NuxzQqG9jybpjeiENqHc5TeHqocKPJumsvXQJ5mUS3MBDkxVPTPAvM4jowqlTRQZA3IygMAhAcpEJYzEFMAQBU+wqdEg6VrLl/w47HYbf1t56HI8w1AOt+Vv60drMUfJnjRIcYmsZDjBEANApqsxHnBtP5H3dYulNW00AzGlVsv2+m/VJPskAAAAD+wCqy9SwwfLsm0RyZGYoHmwRGyHAWCVCSOY4EBRI1A8aRxKaGBz/JePPD7vzjc4OkbuuNDL/LQYy/kpZgoLEoEcBpq63/f5Vy831hh8FfxSPx13ncaa/1/w0hjEDCzVrcxu29UVzBP/SJB+AH1AfZxDBhMw9RMBNTQPkyyeBB4aQ7mwiQP6TOCJsIy02AP6AGUhGtQBIGjMubE83JVJlhVCQAzrklhrESprnIT9wL2OtJhmEbHrElHYWJtWlVaAr0KSaJdu8UnJpmMbXIXt7ygFcl71tUwK1+AeyCDmAGGGo6GjOmBUnbxn/BgZ8cBmDYAQzSsMoIEhGHoTHrBjxwqc1BxYo/zsyd3HlZkXfjceZswV+X+f+cUwV87z/s1YsnCMw6GIEiEaU65UbGqFGrVpGf3GhtkayK0LpNVF1o5FKJyl7FqQR2EKAAAAAAAf2AAcqa6IIIRhmZw1oWMnHeJqdObognRUAAiSJyARQZCRhxGZQgl7/+6BkFoZjzB3N61vBSHCjubpreUEOIHc47W8EobOO5umd4JTy/pgMhzf0eQ0uOs8lL+o6LBhY7TWnoaLhXLL4orA1WGndZ4CgKPNJiT/PElSmGxSHY+/7/P/DruWnegPtUkSosm27maRlvoZj1vvavQAAAAP4IEIVYEwlEiasCaYM0HAjAK2Yl6cArKosnMIIK5g8FAOIA0NwYfPKWyB/WeUiUjd0AhaxVJeilxMPGIo5y9VDG6xgWHYu0xdiQ7YXYLYOgsh9F8v8/rrKXLygV/faMbmdc87FN3Z//9WvuZfB9QCIWjebsOYyIfPWFWxpeYa1FmAoJyyyfyfCEZEYjLs3MAhEPw4QKYlE3Fm8tgcgROPAkal82JCJdbkEw0Bi32WQA5L9s1Xqsdmyg0WZ8PCpnXh5uzzw4/tJSsDsek2YcxjNqGdaVhTYcKz2W2q1yEAHsAYtRtLEbAX0NCQyrTMdDwsaGK2htMK0ccQRTMRwd8zlRmMz0WlTq8TLi68H9VucJyRERkaBipouhspWzYZG/zKGqp0sPQdQdaYGUQRtxXwrC68hb+AYfhtwov4qItE2h7D/Y+tlO+7SuyuAAAAAP5AEVjIixMAbfMZ1RpkMPGAp+ZAIJjU4nQzEaGbI8TwgwuuFjUFzBCHTwVYdApgBJrjoKlIyc1gRADAZjjGEEnwkS6AKCDD/+6BkJYZj9x3N01zIuHVDubpnWTMPbHc5TecKIbMO5zWs4JS4gxULjyuGUThikEHIIgVOIjoNBo48Cul83ShtQ934csxCTekUm3ECO4Vrtvr9HfMRRMtVAAAAAH8kDts9TKHZE6DHrTaCkJsx5nJ5kvQGNhw4OrQecNOYqHGFaW4diOMsYQ1tbCc47EymGhGWiusMrwSNCwbtDwj3Q1IzOiIljDCMaNpIgHAhY44j4mAyNpL3tFj73p9NTf2TujsLRzNf/qWmtXmdK0/0YAfWAt6YgJCikZemm0jRp3yao0gwYMJKjPJE0RcCxMFJQoOdEQgQetErgjoHsgjf1d7ilBniCjgEYGqS/B9Udy4iQ5h0QilSVj3TjSxhxF8eKWhTAB0FQF1mRuO/0ub2HJRNNNlv1WKucecfrrBbWhX30OZZbT+vh9a5qAAD6AOclkhNSmMGHBk8iLH5SR80/jeqOIoZSDpmMoCcPuRbPShp6DjgMkU3QpAIxCcGmM9RyL+PUk0r8t+1t/BYWUTTIPbDY9YAdQODI0Fpki4msCkepQ/7S3FV7Aj3P6V/H1z2V5iyl9P9m6qAAAH1kDQWRmHy0YkR6hIsHzCebMUmoeYZvhZH9RmoDBnQGIDXESImFhYMUn3gO6/tJEoyBKRpYBpBA84PKVEBADFL4CRVUZMXGlMbUoMblntLC+n/+6BkKgZj4R3Nu5rCKHLDucpvWDEP/Hc5recKIdYO5umsZUxa2KkVSIKbKwjtP/CoyyZ/FXSf3qEo94LOqVc6x7t+z2Uqoci9Dd31eAAAAB/qBNwQFUICAV0DIpwb6aERGORHPuA14Y8QHJrqQO1RZgIyDfoQDUn4iidBvcmKqso8FpwyqxeKK0FF1Fkt6hJd+Xl9zE8cKgFfQu8bAhoFYVIIOIgwfDiuY6qd2ZjxfM3JxNjyxhKr2WEKU+OlXQAAfSARg6Pph6CYEunBBxnSgbBMhpMZ0NntkRrVmXyOOk92y8htcDjktU6FfL4jxfQqrKgUjAEo5ECi3fHlOAsxB8ttDTF09Xad+LochpAwQScDRQ0mMxVJtFZ3JS7EbcqIyqR+TYrWpYaKJABgoPq1mokePH99qdSX30q0YrSrED2MN0UdWykQYsgbuiagiB6B3ZYCjgy4akGB8m9KoiQBPRk4+MVhgwN3XBFrEd2/HgU5TQOTSewdGESkhBgsRW4pU7q91IFV4aCMUpkQmMXGBqiYidpIy6TFn8f5pbtSaHfJY3zL1LDbL3wwhPSpL31Pp9yqqsAAAAA/tAZkABJmFpgSov8OeIMRBY0GCBGPjakPNrZcc/pYKrQgKKEUSwsDFkjdl+L4Zev5nKtZd9dJahAGAADJxEGB0OAHVeZugKAqgcmXR8aBA4D/+6BkKo9jyB3OU1zRGG8jucpreDMPfHk4DfMmocaPJymNZIw8ySTsqJiwJBDm+0vp26QEx2Mfx9TkobaqQXWm6wIOTwIL7urAAAAAP7QH+ZM9bVg4eMUzL0zXJTDTYzGEMcMCEBNLUxQVBBRDNsrDpAvVa6YAFCpczNUjIDK5GRGuGQi5eBE7J7bCgCkGtBwTcMaEjgATAUKwwtgme2ZVzwyR45LHIRLPak81zmXWrYilPs41f/Y5QKQgYfChccESmSQZp1wHWZm8pmHrsYPAgXBoKahaAHCYwYguOFCgwgWFCAQaERFgZ0EgQ6kkDqGiiVwOREBK1R7IwD4bo2Zg5pYirjnDERYKCAR5QVLAESQgKrKv+NqqP28TMJXLf+QdppRi4eXASyzk0CsSpo7LHsaNgA4sEqf4dDEEzzlcHUTilTgIjI7wRARGGKA0UQBO8gBS0YSsMrYvwu4ayyiiche2JEoxQ6k0xwRwBwrO6CdUSSdU0U+YI4IkISCbhY4iPAoQFDctvGXRBgd2XumlrLf8zQEGumtGn//PzMg66wb3XepVgAAAAAAH+oCzTGBgw8WMaSho3MaoDM6I50lMmWDq1s6oQEj805QA4LGBB6Nhc5LEAgI4CRQV0KBAcevlaYAAjmDvF4y6hjMJuAAnuguLA4rrq9FJlJguodQX+MRFg1osoetzqqv/+6BkMoZj/x3Oa3nCuHkDubovWQUP0Hc3TPMiodKO5yms4US4HmnNaRI/QtzhhnIPmIBQre/MuuG7GrSzSl8AAAAAf2ADgZI+iEYRCDK1gsoOiyNwM5lAYMY8B4HmQiBiQ60USS0YYieEWD0g80YyASCzZRZSmHRwVXsDgIsiLByUgdgdDIokf1wmFg/yc5olg5IvAEeKAjIaiT/P+0yIrbLrpSPn7lRKUJxO1KViuftdTCKv7vrdAB5ABJ0LpmPSdjhmUZA6RmRBUEes0gMzNFFDhSN0ooHbhU4xEzVZLrkRxAaCsQdsaAZUQCQ3FZADsF9pmqiAy4OgEYhkAMckAFbMgMehTfM1NIpO9FEuAW6CGhJZbQ6FOsrbDDr+JymAHSv7DoNoi7j59Re28/RH7E9aql5NOAHsgbi3BwBkshCa4qF6hqxJo0ph2h+w7XzvgDKTVEjasTTS0I68IGQDLnInj7H9SfHBQ4NHXiFADRmhA7ddbCSAFGPNd9CSYwFEDG5DRuAdUt8o+o7DqwLQptPVxU9ZC/tfHdArEca5zX8WtXaz09fV1J2MwAAAAD+wBlwGEEGJmXBkMMUTEziOzeZaLpmRh+fCRxFAtIu0BrTVUXUXSmFNSjUzOTdFDzhwYlCHgVgU0lVWml9RKIs8IUbLWwUir5p0YdUISVGnK8o0eWjQtY00WWP/+6BkL4ZjxR5OUzzIqH3jucpneSUO+Hc47fMoIdsO5ym8aVRZeOVytKdRR2OcuiLNR0DIvGGPyC9NuyyvVgAAAAH9kDQo6+YyIc6oB0MPID6wkyg6BC+baBgo6PYkKAAqk0SAglT8qJTxEUBBhhQ2VTfBaUrhP12CI9iQw8zgxoRoSLpOFzh5IhCXgFWgQqbAJdgoREQqAlmS2E+p6DIlI2Qpquk+hnpuqKRbxk7htDJO56mdOMavd+q+iD2wNxZiKmIhRDVTU4jCD14y4cOdSjRVUFqwtyah4JTK2wQAJJv4IAWUFtwrgAYwCgOHqKIGlwkA6RCjoMAInmcqyOez1S9f8dcMlRKOgEw9pMe1xHlZz1QTTr6kzurZkY8Czl/0czaF5pdpNBDZtb5D6rP0rpmaoAPbBJJlXC8iIdMJFjAVs5dAOBizSRc3slLPm+xjMg0SFRIZqj8zEFZQRJmAcmmwl+YgCnKjeTDlVTAqBY4gTdK4vcsgy5OV9UiS8Szy844EX8XSaE/yll7B+EEb8NTTwaz6XL3RSQe/1WofQNvl3MrZLanJ/4+QAAAAP7IC9VgLB0BE4w6MBDfDBhkM5Dc18xTVAEB70JgIWAZhxAK8kAQYMBw52FDgEeGTg9YOIcMAIViJlGAgxFPFRY30Lxl3GbR5fbBUngUNPxNIJshJQ0eMVmRHXKn/+6BEMAf0RB3N05rCuIVDqbpzOIUPwHc2rm8kofUO5sG+ZQS/Fs6ZzZYz5KpyWJP4ys4+giUMXqJiwwlXeJgCooMJVjqRUVIu2ev+mAAAAAP7IB4BNBJBSChWZpLwXrhiU9HJyqYcNsAnUDGzowmFxgMrUQ2L5qqJ3y1JIEEIDbl4WYkozqoMCgZGA8JrpicRhhMfpy8wjHYWAlAKafKIcHYMoBCw6BJqJOTcDymSwOsRNJkjOhkSIx54/xcYIxV1qVh44wOCpmRZGCwuYxT7f74IIiAMApMPjKQSMjwA5SCODATOGY3p8McnQuHKDGeUDjSQhnqZiBlUFIDBASoFJTJPCP0NlniAloDACssIeTycilTNMEgEkxtkbMToBJXRokEgDS4JFLSNZifwBVijBoCGgI27wiemX13EKYVMnZKKKMpo4+o0XZciT30Waq2zuEAA0aVhr0BPMD0U/O8MQzwWCnA0fSAwoeQDjgAAMxmseuV/U3Sx0MlBq404DRA4JRUKFoyqqGBGZwgJBAIFIMGgoEus1mUDRYgPL/ApAhBvApBWFYIupTXq8CNegJy9O8LnoEfFkuJzcWNnpCKrMJo42s0XbeiQ3U266sAAAAA/sgStNNQwMDvMM0j0yKhTfhYNBEgqMgxogzpJ0GA8WQShFkgNCmDBBgJmqLANCBSALUGBDwkmRO//+6BkHoZkHR3OUzzQuHajucpjeSUPUHU5rHMhIdgO5ym84VwKhQALbgQBhoqUeBIomHDqJyJhQLZRF30IVCHFOhejY1qPTKF/zlNWTDbG3CC73tMsZemLpnBcgKLT0CuOD9nqXFHp372fZYAAAAH9oDsqdg1hg2W0MMTBSMF/5r5gcGTGdtokPgQsILeUCCyJdaPkOF7woaVQDnCEYrOGgg0Feyq5KGigDpggNXEvC4oiOQ6NifZhwHfIAy9YkKoSCngUqwhoV+5NooKeR+Utom8zdPV4QpQhGlP0I0ouobrgAA+oA8Y02BheMBgcxCCDEN/M4LYw+kTDsYMEk02kLjFQHQVgQW0AhhcYCrqEkzAjDJfDWDd0UGD21axAmqup8kGIvBlFOZLlmzI1Hos7VZrhh0rtKDFfovs6gHNtrN2AFyMieps7vmBR2scFTlTxA66fdLLGnnXP9SoAPbA30AKBMSAAOYkmmKPpvjgZLpmFkpvJsUB7Fi3qfYVOQAmAMqRVd91DBNwQripijRQI2GElQEo2VFQekaXrbo6a1GEPpplYbmChqYFQisHzR6ICLPw+uCjtEWQr+/7bbEtENCkmENGivuX1ZqqhqXIf0fUhgAAAAD+wAIEqPBgEhCwRMmEEwhfx53G/14ZPB5p06HIjmYCAY81UNLwg4cAhgMLFQIAho8YBrY7/+6BkHAZj8R1OU5rKuHuDubpvOlsQPHc5THNBIdcOpx284OwIcy5NDuEZx6scBHgy3yhhFaAZkwgIFJEJpYMVhf9pIODL4qjUgFBCsBERpEPsdos4kyNkV5cZ/paxeev1XITfaTG/b96UQAAAAB/YBONTUMRUQsBpuDlc7rRMElzbBM7oAIAIQBg5xFMrHR3CG1E3aQdJMheUyjklhJ4eEMNZdT+wwY4KuxgGAWKBAKQQUEtlh0tAI5Q8MdZHUiHgrsoeQglfUWEYMIGfweAtKt/JIYM2oUXcl1qlij1Tp6nzEZurfgB9YDnUOMCCwLAAxqODGk3I1ccoIJmRzmUwSHn8BBAEiTCHWAA5RLAKgVih4xpgyZMP7jxBL4ONPEIw7N03i5hoAhgCLIlsM1R3QTBAa9QIaCEkX/aSxpSxDq/LVWCRSvHGANehl/u+8/e9zT8uqLoCSdg0iWAynoW9rn9oy2rd/pw9kFmyIQRmYFCo6DY0NEzQOM2wyNVNi7w4gYohqBJdJHkRwQaDhgZcJjmqg7RRkDjovreLrusBmHQibqjws1H8PeEOoVlCw1ByOLiKWIOlgT/QevCvQXxo63HDab+9jEJQosuFxqxJmlQkkKf9d3bdUxqCC0oVgAAAAD+RgtkqoYBKxioLmTyyYUYJ1sbG4x+ZSU5olDnFhSIQSbUYND0Lldj/+6BkFgbkOh1N05rC2HfjqcpvOFcPhHU3rmsqobIOZs284VwwOKAB5+OAgYOGhJwHgJzGPGmDShwcBAFiqrhQADoYgDl3guDg9YMyiBxZmHzMQwGEttPEIFeC64wyFGuE6iTxQtiryu8gKNTLOI2LOtT7W7OxPNERRCXM+7nK4AAAAA/1gY6udDx/zDBOBgdDmgDojbDkC4XSiINXYRJAlAEkixgEIQwBJBeAyHhXwKCh6ohUTCWWn0y9qYU6YQCMI0kiGQzgoODbZmwkRLZokyy8wJZpORGWwf1uENtATihfqUAypWXe33zqc/OX16sqTQPoZbjFQAAetgmDpgsXg0gGARWZAGw6gTaI0BknMvsI1W0jKjgDAKVhjBDBLWVRScsNGTCgIWgEMfONog1zAccAt0LgaMBCQyd/DIjDuUEAKDXGXFCoiErruBGRiBq8h5cSDi6oDhhakOdjzT4fUjIfTA74ZOJRS3H2nhnd/+z/an0AJnwLdR6ASgYOZnBgZwICbSWGVxZrRwDAdEsu4ieBnAgBsJEUgDSRTpANKIoCiUGWWMVIABVa3wYc12NIwlBRAUeZSpzXH9MfQEdFJPFMIHbEYp+OBgm2uwwaiuG/jfWxtY7WPWTFxCZF/6mAAAAAP9YChgigC+Q/0YPx4aGxjWcAdRkFKHhAOaXAhMvQ4GigwMNgQqD/+6BkFQ9j1R1OUzzBOHZDqbpjeB0O7Hc4DfMmYcuOZs284VxUmXYR1Y0k0aamHI0ZFUosyIYmWtOiYEK4GZr1KTaUsKn8iLUf8RTI2qEP5XYqmqllDTTncwj0OxaIxT5s3SotQtelvQKIC1xLZZqemz93p24AAAAB/Ywn05RAMVYmUF3MeljoEEyUKMtWAJNhUCQAKGoXNLaSX0BQAm8leYIdq9RnIyAZQjE6L/opQeFHCEqcaABkwYsLuRRkDvmACewQ6HJsYKqRSdM4C3o67rFIDXrPfQXLsYo4eF5Hex3mZZsZZsezVTpSpECiJCRAKmMqUzIvI65MOOpApHSQpmCWWYWEKhwysrSbJKCRH8gEpioUfxRwumGIBnwCIHIqlSrW+RJmA4ICFBmZiMlAar5j1eSpKpVID4cZlI5x2MX5ltJE2bs+lr23vak48ghDPFqJ7AdMKmaNUpVc4giY1ft8jGUkU7ZeDQAxonNkUDWzciEQntMjRQc9LlQTtEGQiYRkwsKXDh0RBrNAWwLQNMZ1E+1KBJJoGedEpACFYEFABtQcoiNDjgqTYGSkiEiESGaE3qZgrJoJdlna93j+42LCoFSVEEycWXa1lZ/q+Q+qj9n2qoAAAf2wE4wQhlxlkOCExEFWOGE8yisRBZzUoINsE0DJNW0R6IegwkDICzbTFrgAIkINLs3/+6BkGgZjvB3OOxzISHUDqcpneRcPoHk5Tmsq4ecO5ym9ZOw2zBmEJAO0d5gkLDkDJiGmUjnPaEZABMPAtSMImk1rKItMJfP2/PaarAEZcty6Ol75uo0LMKjp9UjmmWf1dlFur60epwAAAAP7AJe0dqB7hJtGHLxxCecsOGZjAeChSuMBBJlVZwKJNCIp0kJrBSBQ6MiywYeYupdYISV+rCnUaMZjEiT7QEJgNGX1K0i2kEQqOyvH8jAjAL+swh+Nv7HXdCBGxLegd/0n7grCSXPeHhbpl9lv5luinAD2ADQCFhuOhEITRh8bgWbG3g0Dv4YPf5mUaG0YwRA0eDhUmNDUTU01E0agqFQBFxQJOMOfHgAVOjwCsCVS8EzDHpESg8AIThEqJPAJeSTsiYUsC3CBoqjYgKQvfxgMZghYBOp1JXIr/+fsPqIQYAq6j7BRd9TiKfYP7zKIAPrAmstxLdPFDMLwB6RUAgc0aI0QsyqsBFF1GEEKkS3Ys6aDIWLF5hZQCwQKImpDmiNg6dM9BlnpACZEZkmswRfAoAUGAoDAw4ZQdkgQioFAkOjQSA0oQfmApmVp3vK3KA3mv/m2WXlQ0XrcRNIWL4lOLqLdgrzvxSqAAAAAAAf6AKtNShwGgJPGBA4CI8bOE51FWmC2aZjF5lCQjQgYgYUj+GMMs0aPQBilCwg+8a//+6BkGw5jzB1OaxzISIBDubpvWTsQAHU4bPNC4aoO52msMlx5wwngUdUBYMHkY2siwahQKSf0qtw8nGpKFzz0JdL2TlU5qjoyh6Fy8muv7KodYJWzaZ/61raZTrvZcVchqhjcpoGhHAAAAAP7GGoF0lVWmpWjsMdUFGEMxsUZtJxtiygqXYBIF8U0gMIf0IBCxsUKBgg8E8yRU04IZRGKUpk0FDui+YeQULG2EIFdBBKlrJShlBwhAQxiS/IdAB6RLOWxLyJg4bTbCG2bROUY+3c5hAelCn7QP41orPm01NQmxOt3p9ev2AGgGY4g4SHzgUcmBKUZ0Ap0q+GIkyZPARm+RIq3gcPGQ40VTJBxRAEFmrEA7MaagYMGCxphQQsrIlKDCZCsAOjGDQFAMYHO8PBlYXPhhsKfieZghTnxVaSKqZjprAxV92QP4ymNO673taFlEJ4BABgqDByDl6doHlXbtTChBqIAPhRchLltcRuEGg+Qs2N8EPzqCTcvUOw8Pcthq53FlTtpcjBRrpxYxgBoQ7AB0NTFlV0j2apvl9RMrAl9j0XcZbZaECEIdQwb20ipmcDR27vCsaUwKPOWnIsr86A6NDrdbfrojv/6EpV6KsAAAAA/sABgLGAMQgMIOY4KDAmiMJBg5jdQKVQdZzIEnEQJf4wAJCyGH9UbTOACQwRwDBzq0zD/+6BkG45j+x3OU5rCuHiDqcpvWTsP3Hc4bmNKoc2O5ynNYOxBw8CZ4IFXD3FIImP8Yj0EST3QcJtl4oNeBiCZwk5NOH80yUPSIr+yVvIbhptYw/0Da9u43eFhwjabUwuhblrPISq6udpXeEVQAAAAB/ZA9VtVNgaH45CGyEZqU8agAco6bSMIQQ0OWS7YkqmIeQ2d4gQItHeoiEmPUwIgLzyhgKpxoQwIKdgqf4gLB5IykJDqhZah8HJqBw7Kxg+XjyUZm3Vp03kY4tSNWf0UDiqjtqnypQViCKXJIbVi6Lf7/V/R7IGzLvBoVDkGYJIIN5BlwNG+rQYvPZtMAmM20Dg0/5rmOCWEbsXtHznUpk0fUHAaEAc6AcFNwYJDAgOEqqJxGVCIDkrEhFGk8zBAVtww0klAjwIvA879IyKCjxCVwavxwIcXDEp6f/1JAPWjnXpaSetK4yMFlKpr4Se9X3ewUsA+kEqrigXFhMg4FkUZyKxoCFiys5w8GxRCGX9ElFxIE+Cjq73DBihdhn4hVAkIUCpX9eVVZ/QgAk1WUIQuwd2iiu8adA0WHAE70LpbD5IRJVp0vfGlf1kStcZjje4eS19yEqsvvuDChswkdo+z/VsSxkjVwAAAAD+wAeEYOCg6MR5TGIA8Dd4Z4EZyWlmFiGEbYw0zRIPOEcDwMARYJQWQkVZpKIz/+6BkGQ1j+h1OU5nSqHljucpvOjkPJHM2bmsK4cEO5zW9YLQmAGd0QYoMcoGPMVBkhEf3MWDCwNcawSdTgIBhAOXigqpYpSmAx6PO0v9uY8VhmVqcO/C2gU1PFn+hxodSYat6CaRSMZ2BYa9lLR0ZaogAAAAP7YOYiMLKCMCjQxHHFB5uewfYacBscDJz8lzWfkwa+34Ig1Agt4YAIArhdCNHTFHk31OA4i7jFGFK3goo7ZCRBQskAOwp5+FjgqMySKNff9kicEZfeEy5yFNLMFXf8YsCpSNFKpM8rK70arCReM4EIvqT/r9IAGJhUYvA5KRx5DGHx2Yl3yAE4dSgsFDdpLMwPYw2Gg5IaUaX4WHWEbgnkYccWlEII7jsEHAdZDr7dSaCo0m0xDHAv4DpGQrIgqAANiJZWFsLImt5KJc+61CIs5LlOHVcmLx+VnPe/MOStQSdOYr7FrxirWwQVFn3MOAA4kGtgQvNhDxCJjEQPaTqVTDvzZjjJsywMHgidqAceNsASeSCHEY6ifwK0CwZEpBlwJbxWBahQQHHLyF3lkI4KzpNheKwjTVzqrpSOvDEOPyFBJwytx7My84sXCYg/vmwTqN5bbcR//Z5db//9unAAAAAP7IHsBwxFB+YtDhlYRmM28CoGdJS5iRUGjj8aFTQOaJmlmNGOlkZ1JOyiOOcB1TIkGD/+6BkGwdz7x3OU5nCiGijqcdvGUsO5HU4rXMkodMOpyG84RxC5CPBkItBUAgEX+AEyiZnelUKod5gIcyTvKuZprqvPcXy/rgQ7I5Ep54nfcyZkcm5995AUcAvSh2vJVqyahp2kq5l9X007jUAAAP7ILdZO1b5CBiO2MeFTZwQyRVNzSTd0O0EKjxZuAmrqmWIj4DrDDCRqBpKcwNNpS8BpAkaanFriMkoGSFYqx4HGLEeKA4YQJMUuooUrMJLDM/neWEfS5Zo/T21Lqj1etPy/9H//sgaCUEwRVM2IDtZidBuc9nAiEaReQMRJ3h7mEgyFYBSwRDiXy9SBlAEXuAiAHcEsxIk5Az/nDKRCYjensneG3CsQUNTxZamWoExtckNAo99nkqqUoVtEaHDsKe1o8ReaxCoO+GRkl+zWxW8U5a6hXFS7E13XK6/dABXtM+bsRFpkcwPdZkByBjcwWFN3pOw02xotFoIbUFcMIBROVVMqQ9vC6x/xkKI1FzCsqVaDg00GhhJCciI01TNLluF4a6UNlMGsOVgL5IE37eWD7i6mH/Sxd3rT7ioq2TDK1gKoWHIEWuLtY6jrc5ztWL9KsAAAAA+sYL3lA0ZumFBGQOiso7WAjRJqMJIg34iDG5oMGgUzCzA/CqoVCQ4F7EqwuqVBmlmHyBBS9xnHLULeFlYaBhgBaI6BAr/+6BEJIZz6hzN01zJKILDqbpzGlMOnHM3rmsmYeoO5tGuaIzD6aRgkIOFn2ZTqA8HCwLJWvKWorIXR+lkU64MPSyj+iSTSe1KsNKbWhNwLnV77EP2VP6acAAAAA/sYQDhwVMAl0BB4yMDTBgwA4rEvcY9JR8IGmlxkHG8lMZHmYYWMPAMZhwMYhklccVQQNSgqClDVjDgg4YVSoQNHERMEBrUwIIdDgEFDYBCq+cJRVOZVSLR1goVFv4vdx41DsOPcw2afqW+m5J9YBH0uc6pqdfMIs/q81+jfc2AAD2ADQKEiOOmMeNaB5maQHcRQcYHJv/R5hwgAmonmAcPnGeuClggVQ1UQO8LdDrQCiWESLEVAMCdkwhnXXgBqAqCoOXHMYAKDKHo+LrcFyk0ZZXUeS0TWjU271x/ndkkeo/3EH1Lsrt0E0865wvWrXTvYp9AABmQgO3gzeRhwdTMVWNolk6UMAcjjT58B9wx7ckBi3cVUqHmCCuOOBDCCZMIA5o0I8JaIaYsChygQgDhBYw4QzA49JooCJhEhkt+JHn5EQRKlSLIF+RNiQ4H606KwJdd5knONtFbHmaNrmUu8olFDmqmXKv1vQPe0vWAAAAAP7IB4qKGzEKTawzIoIILocpORqlHGMD4NKcDZADHQtCJACpAqkHFjIiVy0hUsIQA3aUKPZ6WhUNOaAX/+6BEH4d0JhzN01zIuInDqbNzeTUQIHM3DesIojiXpqHMqewCi7QtONOAI4YWi7NVqpbsHVCjgqnFqduiGokfLJmC4ruG6axLPuAbg0UcNSZAwNLkRPNpKmgyMQcLuY2VWZoGv23d3U+sAD+yBLEhA5gAZmUSaZLH5hBPGfw8dNFhvFcbccHHFhmQWaQEmbAAKITJUS6YAtJuKExSAInU6DAgFedToYAZ4qA12CyZFINPGcUm+oEl+TGF5HTLYo/oUU0BwEnzCJU7NWPxWMPFDT7u6IKoeHTTDIYBg6wePOFHPDIBNNAsOKXnST5gnrp6PIbMADHAElCCqQBzmaYcHp2J48Md1bmqhR8Uqcu2ZpoZsCPnh4kYBSJH0foUXjGgH5IQ0mGw46UGhB6U9Ek1DyosQsMKEh1AWfJvNGDnsUaC38LtINJms8lt14d0rAobXNSgx4sFgnHtQLk2OGAcqeaMZHRmLFS7bGKAEg+e92cqKx74ADDwBGAMBDELHIzUdgFKwYjTnhrM7qI2QoTIQqMcE0xSGjBpCHgqYVIYYDQcUouKjAkEFQCMIEhpvGYQZLIOSCoZFkbwolMCRwrMgHQ4MtHBh4NGpxn8cN7byVDTmh3qB94bbIsK4YA8TRDr/0PU1N1TZVVkvdHPLAytArS0u2ppwI1Kkj6kSvoym08kmsAAAAA/sgT/+6BkA4Zz0R3OU3nCmHoDqbNreUMPuHc3rPMDIaKOpyG9YNRaMHGhDGAxELBCZBmm6yhvsgbcBHtsITIi1sA3zoPB2g+EPGhAkMAA4VMfBnbQyIeMslHEGHTmLjoZmeAPoskWLBLfIPytZXons8X9TNbSGj/LiwTvv9EYaf3GW1nffjI5yaLzIvmWO2rdpH+Y11X67djHgAf2MbiakRI+FiphnIhaHhkDzE3xo48lNdCjAkgwoFFjYAHDywFOpigVV7rgHQOnMoY1BiKtroGGBzhEOqmGjAYoaMVaW9f9k7Ji8Ccivmkv4OAorQ3zWchcd3YbikHxZvUhFCRGE0teNBIGmFbD70shtIpz2mRTQ7TAAB62DdNMcAjnEAoKBBpU7mzz0dQlpoARGexQcKJoGpZksRGWQOFQydaBV4hFDCYadqHMI8JOAUjBawAmopv+xUXKNcMEwCAaWriHFFC/sSTQZBHrLgvvDHZh33/j8FR1wopNw3/U0MjoSLC7Qm58MmQ1tc4U/us+3v1sc5+AC7ZgKiL/puGUMocXnotZpVAKnHpqGDBGJejykwYiBEHHti6RzjjyXVhgUOhNQcTaA2ETlMgCcKDRWMZUzEtGHF2C9iqbGYlA6nl8LyjWqkrh2ijDsunJ5r6n70HVld0PN1sT3L7szqrAAAAAPrGF3FzjARRKp7MpoYz/+6BkCQ5j/B3N05vBuG/jucpjeCcNEHc4bXMkocQPJumN4JwC+DYMSOinY11WNyED+Ig3RINAMwQVmgDZlgMOhEXIgsdTWLjqGISl8KxDxi2445CSIDHUgFmjoDwI+BzGBO0hKZW0hdryT+TXqLk0/sbhpnsJgOQSONP5x9plZPxSpECpUuES/fs0LQrR3e+2jAAAAAP7IF2rKM3jSYdEYdmGDZs0YYSPGIjoiGzIgAHQoMEDDwgecmanHZVmSIQkiF4jSGPNFRw5M1ty8axBgo6cu0b3LQJnpStsvZNaHZQ/kCqry6L8uRH6WK0EkpX9kPvV77zbMZ+/db9evvSvpT6AAwCMGjYVjBKTBOgKYB0iNfFpAMYukZmpGmFBGCozV3IFTVVSLASDbuyj83UEClukVkgFgYwPEIPMzIA2QpzKWBcJbikH/htyVg3GpYXE4DgT9RKfj87Jo/8di/3Ntri6nOxXI2UI04gexhe46AziORwFIDpMpBjBI0wILMLBTNzUcRTDCRwzAA4HLFlDNGQrbR4ASxxwimg6pgH2ZypFxF7nNbqiFY8MxjQeac/qk3bfkOG0h/4FZE/d+5LI1EK0rfSVyCUc6m7xT62uRt/GM9+xNrPTamvTwAAAAD+wAFBdnJlcfBC5MIog4yFQYjG0hx4Qua2EnmYJ+YkZKTGBFBswoNfA3j3/+6BkF47j1x5N05vBOHJjycprDHkOTHc4beWNYakO5w28JXStkBZZhzjgdKvR1BuQD0qGBAUThQQNKNGRxEJXFUwbxYFbinKEhcEfhUOv48l6vKOxiVRWQRaJym31orY+WqY1gvXNBtKUitDtbNXVAAAAAH+oDYHJEIktYjIWlPOxDuo8mMTTADw7Ikw6YRq0wA6SMEjIDydQoNrSAYzIaGj0FkoaCzhwSsMDIQl6GaqgSYL1xkQIa0xMaezqFMfKw8lr8u0ZHDZ+NxrKv+1dm6r1OJqFxZw6hZczUlAqEaNqvoAWoBByYrGmZGZp4mehqg6rNcLThUYxSbO6FQcsGDmZkjea4Fm2WlWBSx8wviyZWYOjVmMMUx3iuhpDngZcGgkTZEOUEJ2NgJFXribzO2aILiszjy4SiLfizx1y2JeEwDH910OzeKxuUdKPpJyQ4/6Yp7IJE3WTIYmMhhNGhVBONRR4cMjBzWygUGjo0/bFDLONMC6gME6T+l7yE8QUOBLhKChCggBXDQyImcGNImqSb5SQqqFqOFJVIJSsSYCw5l4mIRAMggJ2QDHPfCWx/oUFLtnvf4tyXorZs9rAAAAAP7AFAx0PNEKTBQ04BMNPxzR0ojCBUQMwZzrConqTqbHKTKCNkQxLwuiZwSIrwhAIeEHKgwYQKmoIZIisSl4JAGIEcjUQSTX/+6BEJYd0BjHN03k6+H4HOadvLW0PQMU2jeDvIeAO5oHM4UwsFDEouiAhQcDFP9UThp2s0urlX7EekoAgPRsAst/R0W6mLbZTWRKW5WepZLUTcq95lD79yaYAAAf2ALTKgGZ4VJjnALwKejIpwisghgMPtzpgc1QDRdM2QzFAALxg7daCkRg9DBf5CQDCFhgQxJEFAUfDgcEIBQhgt+DzxwA2gVn0suJDRhBXaaNPSwtoFu5P/T0to2GQIGKJe/qrVZSSr7qRZSqrfTXVq32foGF5tLr9yaYAAGwgAYT2MKPjS0EXhQdlCy6BTwyzJMAXjLycWkDCwFKswggMOAAMMmMQqt1CYgcH0FAo4wITxe8iGwE3oIoJ2oAAwYWCt9nCwTuJUsDarA5QF4TnxlBsUHwBBoNAYf/dD0Zj1Vmom1U9qmSy0+k4uLcKlxGTF1tOJlbRAQGTDgqMjhc2kRDJoXNdDYyGMhDZzNDsMWigBEDyBMme0xhnGWe6ZGcPICxqblyWQEtD0BDuk1KRElFkwgPYggYCOI1tTWyl4jaDQrYS7b6PvizSe/WqszFpVTtBb45xwVNDkvFrhbcJu/wLatuhgQDQ9oqWvoAAAAA/sYQmsGM/TzAUE3x9MA5TCiIzK1HRU/8TPSNASrGFmg9OBnGb3YMXGQTjVC7DSUKYhSKHA14c0ZCr4ub/+6BEIA5kHh5M03nDGIBDybpvKWsPHHk2bWHw4fWPJqm84UyDUMCfUgOZjBFwgBdJiCa7AQuhVicykMHRYZjux8zUoncZZLH8nvEwjPQSFngU5dCgtaGGIw6XMmUbDUacqY1SEo/bvgAAAAD+yBHmDzOTsZOTejsyt9D4g2cYMeRhtfPIUzFB8w47MOTASEGHQAXQsCCQnzGA0eS87QiQAEHgUVNaBVY6KAA7tAaELqqjYUQVpac6lxnak5VJCBTVv+xRGwFA8GmegTCY5Ea4EPPcoIC1pJqXQ8XNGkbTEceqY1aUp/Zv9kEDKlVETgDkgCB6cSMRUiBqbFubd+IKx4ZYdZMWKCHBkRpqihxwJjCqrEy1BlMFMAIBSDzB7E+X5aQF3DAmzt0TuWHdVLSDDAFrRa+V3wLTE8XECE9bka0HZE6QCFCccGXqFROZrOl13DV9rKaIEeyKPLo9ytCqVYAexhoZghGYeFmXCJz7UYAVCFuBKuIFg3vJP/eyZgPJIASmE6aBJs+Ar07WFcjBA5JFxoBYcRPLnAhAOoqcOYyo1vIhhCmHBlWhrGWEZZA0rUDZr8fZda/9443H/kUAtBs9AECZKNI1iwjNVHFruGL7WUUQHbF3FU+5WlVK6oAAAf2QZEICZibiI9NYgThmc4YCMaHREfAy7AxSZKGmlHpjg2HFK6TRQAr/+6BEFYZz1R7Nu3h7WHrjybpvWEUQFHs1TW8oIfOPZpW9ZKSGpJ5loSKAk1hSrBAlLozPZSqFn6qy0liBAxlhhGW8UhLH2LpM9ZRWfwJFj78+Ib43x9szh+IAoSZkbVqCCCYAFRwkHtFZSF2K9bdX3e+zRAAAAAH9kEaZ6wcwAhNsoTmkUGAp0bUEU5xHyeYuW2EyhgKY8GMEAMEuNHiQ2KMo+o3DKGVpjNdVOwBHyhVE8w0JW8OGBoBag10Omne+tPKqWmyiL7f//z7kBrmSMZJY5QEo3U4exoiIDTQQICofFlNnirXt8V7fR6K++AD2MKkAAQ4C0xYYZiGrHmwegb2dJAegCYRTGqhhn0A0Q1jyMYQjhNIhKFkw583BRtIRFqgBDiecDLRnYfEgUJAGaYAIwTBIMAFdKP0DOTD0FQHavylqH5fjqtjDbG5mTf5wqtYuF1rXU01B+eEaSg8TLEhWWYymYW5oS9LkqZXKwRAUDgC9mEFhUeDi0A590/ccwT45R89Wg9LU8rQHITQnUwEJxi85vwOOPDMCDFVIDrChqKRa5K2pIx40PKBRY8YMFHEMgULBJrrrf9kEpeXt6JY/r9/Wuu1AbDb3+dLLiEIqUqNYbg1PCIwXHidYmKy7WUzQx7R3oelbK5WAAAH9gC6SwSGTrBlBYYNBmpkh5CuaQonrGnk7GIX/+6BEDwZDxh7NO3rByHQj2bdvDWsPHLc3TWFPIfSPJum8JeSgUOBMxiGYuXMskVhHTxnEQINmpDQekWDkjKx0A4xExIOauGUwWKLPSMBC2yAd4tdSyec5OVWJmNLnHWrf/5fhlKXpzov9IArVHsBh5AMlGMn3zCssvxQzFBEiAAAH9gDukAEYmSAI8MChTaToyI7OUgCwJGuDBiDQY0VGuHpCPgkYJ4DQRPJwWBXwYXLXOGNGQiITlpv3IecovEJTBwAWhgQyF/AYBnr8yNgi/KczMil+kPwdRilA/9AFqHxjBM4gHyjGTrphTpRfixiKiBMAHsgcpbBIwBaUwiIGoD8FDHWTo+z9bjX1jDWTAkjG3QksZQSCWCqCl5pOTka4X4WqGQTCQwXdCLtK3ECnSyS3Ejlmw4o8py45Aq2HIcIwqFCFL5UfwnEYU5v9c21n7+yHvLSEXeZWGB8dWDx/tdRPTuUvF+KjHvcnAACD/WBL4iADFFgOmQIvAEOM7DSH9ONpTOi85MoMKOQcvm3iojCDIBMwNAMVIEU0U0gXFM3TAwCXIjAw5eyBq9KqoQAGoEhS/gFMZQpvKGZRJdEpULRmlmP/6hKwTCrXKTrjFOND9T1kUOExpqWRIBupO8vL84hbNZIglF2AAAH9jCOQsMGAiJsQOTMBjCAcEYhtWYYJmEXQWZzcxA7/+6BEEIdT3h5NO3hLyIJDyaprmScPnLM0DeVPIi2XZqnMteQ+mShBy2YQMGAo5ADmcCXq2QAUdSH1R6CPkjiJco5WYipu2inCUCwRLyPPM+kSQ1R/esjRIWf/+EuKgbOt9Dws8VLCr2mErhpIAbDBTumWdB8gMssQmKxep12uAAAAAP7GCyRnARsa55BBukZMCMAlM3G0jBBnMQ0owEhzFJXMLKxL4xGNwTSOvnmenUZ0apizBUBBoSbhE2CKGnxSdrIcw6UiNS0TuBQIcDDqABN5oSGDPHqjEUv/////uC2qsCz6XBBwupj2GUrhlIHbDBTumGdDiY+2xCIpF63XaoMEAcAJc0QoMBKTIGEz89NqNjMXsyMfOeNTq4oMSBARmirgXNw53GIAa4bobaqqhoHJaGoAIQQVWRBkwuHsWNuMmRsJ0DRAFha2Xpa4g4o8xEIiD8hKH+iSgHArE3+yrddaX0XYuA2lgO8BnklXriUHk0MSlDAJIiqz32MVgABh3QMJEYwMrTLg4Ag8M8IkyUWQWOTKZhM+tczkhzBpcMRokKDcKDYwGNTEZKM/Bw/FDaTLRC1pgEmUwqmIDRGQPdy3KnYWPnnUWagwKbBSxlhHIQguoIhZEh1kOcBXjgX458wUakcEhb/dSrK1Vnm1q3sgo6UAQ4AnEF3riIGU0NSlECSSln/sYpX/+6BkAA3TiR5OU3k7WG3jybdrJ2sMlHc4beTtYagPJs2sHeTAAAAGP7YAglAJcYGNnOC4onm3N5h6eRK4Z0mw1RpSAa40gAzAWgX7EQR+HhjqlZxloAUTRYcHRLdZsKGp1sVv7dAlaRYCEC+jiBAjps+SZf9WJkScoljUef5qBYAgIm+u6xaY6LuEIt1ntVnXWurq9MAACP7IHyUdCwox4kygoOtiJec8inKbO6Y56dIybK6YV8FR4w0PhGIeHUHIegaOkPqQmiyKda+l6JmX6chAFqgNiXGTshsLlA4ZM5qMSLxqPRMTlHO/UVgeN267WE3WOlwnoOHaL5rb1U/u9vTqAQ4kBGAiIcGGEIJjAKYqIkCUYPDiMAMYpTbCkgHgE0mgGhjYaCjgkYyJEzwwVB5kT0IrhQgVJRAVWhyWzBUDQpJhAx9cNSCyI1S9CS/qaqfUeER/9TgEgf7q97ltHWsMEKSdPGAA+UxQYEFohIeDTRqAImlMeDMCWOAsBMkxrQ2bYyBEGIxKkFwacbEiAqXrjpUsWLysuRPXDSzCWoMWKUTpDIDhx05M4xLV/FEm04RY4kV/wNBEl6R9LT4ZXGlKTA9zOK+7Y3uTZVXrr7y6gAAAAABH9oAsHEQqYcnmampoMKZMOHNh54JuL0Jhk8c52GWn5gpKYq5F9TalCxgOzBVZuNrJXYP/+6BkHARTjx3Oa3k7WGxjubprCnkPYHc27XNIIZqPJvWsNhzUFgUiLDmQJIHPSGYkMlAT6CYQoK2voXpIgo4sCTFpfryS5GF/4XACAc/0dEkxx1A7au/TvG921U7RAAAAAH9kEO5L3MGGMEaHlxvwByYJjQJqV6CAIdmQIlDYxxsDRhksnAEfCugYgGJVAtA5vTpHlDy7FJApVcKnGxQyCoDxE6EVV2Bhk4YZV+GMGhp/+xUFPx826wrJ0j3OaNpp1Id92n4v2XX7oAEP7IHxKpweMmOZG4Zha4QNTIGgmketqZVoZm0JGDfHXYmSDC2EGnzngAEJMSHFQwEEsmUPMMDBwY0JIrTyyaf9fIjClgSGJE0gCQe9MtIVHley7GQNipL/P////+CW0sO9DTp6cO2Jm075cRk4oqh17suvPJJJfYb6zAAAGP9cEIyh4ZkqDTwGBGmRGaZmsIHqAmIumzNmeHmMQo8FUK2hgRy7wMiB0BN9kQVeBDmfprJT0ENovJ7BRbglrDdsrsk8kkqs9INRJxpJOY1f+YB7Dib6NbqWBeOWx1Nuj/kfGcAAAAI/tAa6Cg4zNBMYPDIloaajDIA3hjNjNzDkAy1oMAAz3xJhyNAeCEPQNPREUmaSTI58cFBJpfxGkHLRHb3MrailiiuvgeEcBk8RYayRUEUaaOJ/2EkCvllvG7f/+4BkLwZTPh5OU3k66GPDucNnCnkNhHk27eVvIYgPJymsHTygv2ddrR6/qW2gBD+2DCSTiHEuikEZ7x6nH0eDdzopOMwKDK+DzTHHNupKpeTK0qmPphKXrHT7Dmg5SSEvfp0kqgNgdK8BnKhkmI8cSUmp9esOkBT76GAYCy7veXQKedvQKt19NiP/LV7F0zduqDSAOyIw8ZVB0jBSIDuwwg0MKbTCQc4hnMW5TXjQxQ7FGo1lBMLEDA0MAiiB6u1NQqGEOv6ApDPHEKiARlElig6SJjCEVg40QWnAX7M2drdfiOtQXoxnf6N+RAGhqZ1lLlXv+2Xs1eldPnNgtwAAR6BF4xQMLGB5+hoXeBg07o8xDIJ2FoAWRusRoHonkod9WlSIAGslN5vVPhBDMIDrTfqxSH0EabhneDjA4h0G/Sh0Ct+wtDF/DEbxS+JgCQDCHpQUZTHlhA64TpTpnFSCwAAABD+2BGEEJxElM//7oGQGhEOVHk5TXMIYccPJumsNeQ+AeTdN4RDhuQ8nKawh5LBEHUzA4BbzXGiRufzAYXhRlIBg4WmPxsMiBPkCFLgqXAggISCBrACFA8gHCC9gc1W1h8vUNFyCKo+CMIyg5Slq+2gRYWG0mHcu///9bv/G2bPde+hDfVaYvJet6a0/3LYu3u6vRIAAAAH9gGKqwjRByk2YEcUGYqGxEmdMGIumCbmIGGstGXmmJSGCBmgVr3Aa1mgVpacFPXi94RMGIKDGMCpHVaYD1FnFgUAJCwLuMY051eyEs63NqDo/H56JSBLArZryi9tCKDCbksPlj67V71PXlqdlMAAEH9kCdJKSkRABQI7YLN5pDGjU4nCN+mzaNQ6qBN9ODThs3NUMyByoSI6AQkA0AYORmDgaPJjaFBhtgfgwnLBkVwsCRx4iMDmwaRfEZwrBB12ZDNqwqbxc9yf6AZD4ZAiJX+OeI5eLDLVuQvZW1aGvzDEpJsEFDv168bAAAx/hBUZQDUQCGGUeGpNmVlDKk2Ag9is2BwARzINgFnGhJnyoCQiUYFKHYlk1AlsKZF0QYB8XSDqJbxgYYX/EbgSECJdwGhXiueBcWJvA0E4an+ShbCGANIndoDJ9abHe9s8q7POas4d//+hXXcAAAAA/sgBoCoUIIgIPjD8wy4lEYeY/8nmOp8Iof2NGaApgR//7oGQSBkPQHk3TeVvIb0O5ymsPdw60eTmt8yghkA9naawdrOegQhlIEFRp42KKRsLqcIADEaLOJfGGGFSDL1Hkw4pmb8o7jzxqpiWo0eXPHtFMX8kNyaf91zdv/3azxsAZBAM/jiZBXXZuRGUeNY9mdagLrTFv9DORgAAABj/WCQwwVE6QhoyoNVnKEEAUgZnuemMKkSswiIFrjKgjRHjhCTHiX8L2FsnLAgEAC/SBJs6dCA5K8sBGJSAGSDCFwxLhQiAHNFqKgnj91Gm//kmeXjmIdzPGCnGJ7/KOkDau7pUx9TP/YpljIAAPrAu8RCRjNYacUhYMMiHR6vOKXzfRIxgwOZNEwMMgduZCrNCJ4ffAqY82OjgwElFFo38XciqZj5WC/yKL/pkvelC2jvGmEYIyfEOSbNrzyyLHP///mPo8YecZ/LD/1MRGHlGgsw4A1dK5FfyO5Oarr+KW2MAAIf2gV3fAC8LmQs1B0k5c43esaxEC4xbQO0mJDnBFhwkiyaDsiBwC6oQEMODGiEKsQZB/xNhQNHqimSwY0DgZoReVZpKBpk7NL7cCRKnxXHhqNgiACFv/V7U6nVL+j8c2HiKAAAAAP7YFMgARGSBxzAMZGgmRoQQ6mUDRrIMLVplNocargoOAwKOhg0fmGEARQH8YOm2pxAlIZ0iTAggR8s8/xZ9ccIOZif/7kGQjjWO6Hk5TeFvIZOPJ2mcPdw8AeThtc0ThnI8nDay9rISmJKxDmreGNfflWaUUrFrGf7mHFCUDwIZZ9aQHqDFwoNUFTe9rnVKvTqaM/xb/ajAAAAAP9AIGRfL1EAaT4xCZ44eqhicm4e8iwfqocmGfIbHeIZMCYLPA7UjISozmUAOUqVTdeBciKOkl6XjZkAxo4A4wWho6hmGTSZ3H//8GdjgPydE1r1V/Vtc02lRlJPa1fT/0AEceEhcUYMMf48cw0BrRm8KGhQ2Y1G5iIomzIyaDCJs8nAxEmICAEDAaSN28NSSCwI2AEEjy0o8NBIYoUnEQA4KmCnsp9VBVMvUYMKkMYIgZciLBGSfQF/SgJIqGf7//+dnsQiqvNUXoY4qhSdTFXNVpoLVWu6LV+0DrdRCJAoNYAQ2geQGkACPG6JmTOGoCGKnhKgSZs5HDjiVT3ATgQogqh4g+KhmsGETD1xQGqOQxYZSBoKfIcWY+QClROk1q6yEGiKQWqf/+m04plK0Don6brq7Ncah+8lWbSvZ5auqAAAAAAAfyQP/7oGQEBmPEHk5rHMjIcUO5zW8rXQ7gdzlN6e0huI7nKZ3kpEtwYw6PAbDEpLNHnIxGODBioMPF8y+GjRcuM+hgxkEzI5JAwrNYcyhhO80jkAaOYKSFRg4AsBmOEus1T0+oAl0iJwxCELIo5hwAFOU1g/GswYVAWu0zff//u8oI48Usfqd6VCtWowiiTd+7/7/6+764gAAAAAB/YAvpKsvSDicsDRhSsaWKgQZQlmhGZgEwbEPDzRukKMAIMsACTgZCjmXnMNQwxBpAWHBsZgFmgEPBA4dv7IXAOWseXM1QO2YepwRD9qP6iChACc6v9SyekcEhC/T7exiWUBIypcZsPOpR16cAPZACk8RDyDISUFgmNfFDlgEyUeNsZjKks0s8AHIdwcGCnhqzE0QIijtc9woaIgIqAn6wZh3YCGAo2RFDggmuAQaxZQ0eIGCAhFgxh4CFAUYAWBwrICEFcSIjMb///w3MsCIR7fqXHsHMeD6VenfbMK/ubb//pwA9EDTYBFHAEOCqjWwMNjjATIZDjgQoy9bNFISdJMrKDHUoMBgCqAwyBRqdxoHCMcGEggceGL4nfygoLAARiBqFDZPINTQfHlw0AxgWuZ3H/TgVIv+xz//+/M2KR25N98z9cXcNEvsbqt//+2/dgAAAAAAH+sABDzYzGZrNdAcHCoxqKTRQxMRHsx1AjP/7oGQPh2Q8Hs5rm8o4bEPJw28vaw4QeTsNcyahsA8m3Z3k3PRbPSPTB50Co5zE2aa2GPDBh5qcMZBF6Dg8xMoBg8ZIIMBNoczXjo1PkYSRC6i4oyKimqOA5SwgOMA0dtVYa02leqoo02aRZ9///Gkiepe/8j/03qVnoDQhLRWmr7u+aJzzLPirVxaioAD8UD4ohOLhmKCCuB6AEQeYSIHMmCEwyYaIC40QNMaFQUaGWn74pMx1RwYu24pnvGSov8wCQamVqLAPYyMgGHiAF2Ym5sjDzkPv/YiaM5dVwBGp77//6kbWdfQy30FgkhKCqsYfOf/149FWTgAJgIJJhTCZyWaEYc2mb5WbFsAhwapLZmllHHxsYXF5l0bgoTmCcY5AdsHcpGggkDXjjZIKdYIJADuyJuG0GqR3CyCRpkIg1gQnj2aSMVtTKwqey+IE1h3///ziNaAKeT9bbCjn3f5CgrZ3etbepfpg9gEibgiap9C089ztFFFgFBD3oYeXGqTYOBDMwcFCpihaaIFmXl6dBEgRHGQGPEmEEcghjGml6AqyINX7+rHVnqmeAOhDxZYhApzjcsperXUXiF6Md///79DSP4l9IPqXWYcq1rm3Nkr3fspVgAAAAD+xhBcdDwQlhxSa6IGbzpgAsYkHgwiP6YjmaM5lSLxHRln1onpHGAvmTJqwMLTyB//7oEQaBsQqHk1TesqYgcWZo28teQ9ceTZt6ypiCpimzcy15DoBocQIMMsE58wQ0W1XpK2XlugAAOAlh82wxJteCcFeVJ6oQwcqepBVj///syl/4KZ9OP1CAXU4UWUcUG0MPuQgLj1GTDz6Bbehx1RLTs2d2sAD+xhg5CHlhHEiw2VIM2HTFXg+J9OjLjXhMDfxltgZinGtvZoa+EZ5o4aERw0sjykkfppkjiEkQOAowmBNSIwAiJBgBZxEw31DRVQXS4Z+BSWBSyA1UmAuSOYvv/NE3MxTb9a0VKqepOui+i6z8YWTcVJNJGjBeptE2VcKGfXr6ez2gOQSBZmLeYSRmcKZm02csWmOKZmEOfevHPURjy6amUaKyes6bFUIAB506oiCAVaM94YoM2sLBFVM6FRik5A3gctb44SniTcB1RiRmCol0lBZ4WAC3KXa5MonZ///8o5clDzyZ+hSXB6IUqaOqFjg/epy1adzJJTmY9YFH9oEBDARMalUhDZh4kmKFGZGMZmdGgkQnHz4AoYZcUpjAPmiEGZ3AZg8AmOR+YOI41cX5G1xjYmqXUfxA0+HIgtIFGK7aI086SxhRo7CBAWdxoABQXpdAoQFJuqJcXxlmf0SYo4CsCKb9+7U31J2rVdU7WtaMxVvW5a9G5kip7cctcAAAAA+sADg0Gg5pTCDyI2aYNBBjf/7oGQKjnO6Hk3TeVvIfoPJumd5KQ8oeTZt5S8hro9nIbzhjHpUyy8NRwj7L48tZBh2c1mmSupp4SOihZ4e/DjCZEYrRAQsECqwOcKFkAhznw0l9IU9yIAwRguoY7wNHM41Q2HLsEL/QAFrAcmRS//8lHycHo95Rq4so5osXNoTuw6S/s678AAAAA/sgmBGGPOkUQ7AZ7R2RaBUNbxusIbUgmNgxiYsYqUFQULUiJOIEAH9FpS7hCCZEhihnMwIThHGbYxhjOmvlQwhGMMhB4RElxAghItVsOQalSvRnDNJZM5////3JHaWBirO5yhZSRVplZSeXTJuDI9hByXJvNfvGfRsu9gBiYmDiccMTZwM496NBlzZUA+99NciztLM0vjGTww9ON8ojhyww4PESQZe+GAweLQAGNxgwJjRcI5DEgMN80SYep2CtMHlC8hqNJ1Dy5niJWRfB3FUVMIdHVCj///zrAyFM+Bo96hdw4YcNq4EH0sMEFXurYgh4sqACDaVpr0A0fMJEjQUsFLJhBoYClGbFRhJQcE8mGhxhASgMMdY1fzPiBW5iQFxgRYYohLG/ARIl8kALTZ6NINNGfiSjG89EWKJcLw08DNdFSi3IpL6l////+5yhZ7b5xFaeRu6PR/V//2ez1KAAAH9jBECgoATDqfFk6Y8KZgeMmx0MZAFZtccmMAia//7sEQQDuRZME07mVPIhybZunMnaw9BCTZt5O1h7w8mjby1rFqRjVfG6xkbNURlUDGCC4YsKhjIMHI6URAIc43SkMxHDGPawaywsujcJHMCGgUJgyUFuS6YIMKFkSCsCF0CAYgEJRQgH4+f8w4QA2E9v7TnWzTnNMPszK5ZiA18uEFq0JX2Cgo/irlx39P3YAAAAB/ZANCIwAETGbFBQ5MIEUGKcwUHDQBtMeo8yuYzLF4MFGoW0ZplrGIxEZoYBFPGk0CRYw5UjHQIYBGQeKZoxAkwbUYOtN3QCkAwWSIDwiAFfGCsLNKD1GX+6qP46LT/5qjwBIIP/eeyWd3ZDD7M6vdj2lShq0r9ijm6li6esnOIb/f6PZAmAIA8yVnMiLzG1wFPJgCIZHKGXL5rzOEOZvziI6AxIVGnEG2lBpkjCVYsMTZDNyGCAwlQBB4pQEMuCIQJGxRQUDQJBoqigI0i9ielyZVkSiTKCQl/43Fgu/rnsY6Iy+17lqqbaZe6efpc+jHKze/VlKs+H/9+bZq9jBawkLwQ6mdJoBjhYAMJXjO5Iw/DGSU3q2P4NzARo1FFNwMhsYQ0mloQ0nACa44RcIbDRqJWidNCUTes3JEVjgx4yDTJSEBYKPCJgsACkmUU7SiQAElMmHYPE//3FMbeqHgyLj9z3LESCyUslbB6wERfRUMS+Gf92YbrgAAAAH+yAFDhiAwTRBroGHEwVZDNSg01MCpaaA6G7DQrSjqyZJMGqHaZYNEggFD8jMXcU2ghFkNSiQSHI00h4gt6j+qZD5OoRhgwUeEV4NOrASWKVYNXwgJdicw/////92H6PdAG//uQRDMAA9MdzdVvIAh248m3reQBDVBxPnm9AAHpEmbPOaAAZAK0RztWo/c1OUa/svtnB7P9vYLQAAA/sAQoMCIhY9B32YiNGHERhjQac0GxHpkn0cA1mKpBg7WY0xEScYQIA5pMIDC26AIFpG4er+Gxw4IUYCTKMTHBn+WorsEEEgZcN+i7aVzRIcXqspJtTqVxe///////Qv7O/HioRnW3Gq0J3SDNyXM8DgLdct1ccAAAAAACgxmpSCScxszHB84ULA8CZKimDHxmCAeIummyRmZoZuFGgEKVJqjSCoA48wzAcDDDGBQSLQhLvlBFtQCeIirnmKFAI6iOi205q0EKHpLy2GQsAfSD3+c3/1SqnnuVnWYNKv+5gfcAAAAAAlIhpMpGCQSZ1AEHGxXIbWk5ihmmfTkZ1U50qYmp50ZkBBIKDNiiMyFQ7oRzUAjOHMNDJJiYIBG9SmJLmxbh6FuIUEhJVTQBRApDRaK1asDNFhTEHUiHJL7KAkBWyFgRMH7/vo1L/+bTP//pJz///z///6PAAAABP7AErgAHmtHx//ugRAaFU+wdzddvIAiAo8m97mQBDqR3N1W8gCHdC+bqt5AEvYcYOfmNgR/AeaMoGBwJgJADJs4eUMNIjjS00YGFWEwNFMaMQKQZy5cAHKtiG9hBIAtQAOcbZhhK9ccwzlWLIHxwG64YVCR4op66/qzx41wop3H////96e8BdThyb1smRGZaLFsMsdO3sRp0h1aFptgAAAAAAf9gBhMDDoyMrEozyDjIJVMbgcy2KDP4DMlhYzCljAx7MkpI5GnTAxUMBjIwqKQYAzDZpCLgdAbQQLSZODaBDUcgZEWa5iDqayFShxEaoqeYipTpDhhQ5iMij0PDASN4se/2Xf////13Gyd1uF5KpPRahA+8iukVCimfCEAAAfU1CokYy2GHNxmwmbCTm/PBkugcYKmKDYMmjVTk2vMNOODKAUxkMMkJwEmA5UyESLVR81UUVgiIMQLDRpCJFrUacDRg4xxAbcVVE9IfLmv/F5h2IcLUxtzLH/////rktP+w0NFFqzW5iKtDmBwON1qZUnAAAfq0mAlhj78Y0zGhQJmqWbRLGmzxqheZSnBEuFF8+wiByIYqFrAhhoa4SnVAIqQIqYDgKOHnx09yT0NATKsawDkCAJlZCSbAhnBA4ZIlYEIEjWMGrQCR2VSIMfLEmWPWvW9RQuh8S3jkMQTCj2gW+l4nGrj5OpwAEAEr4AAA//ugRAQAAwIc0lZrAABXI4q9zWAAD5B3Nn28gCIbDCXPu6AEAAAAFfEKogDhZ6KNxVWLUTp1zlJTEHTGHD7hzSiyzwCGgxWUKAckLPQSlM3wOmjg4KhDwglbTn6T4Wu/iu2JTz5hYL7Tr+KoM9hKsw8Dn/aFQ02P2ShV++3ooAEEDY3XgAAAAAABGswSQRGTDMyGedYODogluGloEHgA8DvSYycgiDoikIRtHLn+uQ57WFPMv0y2B5WAHoBIJHAKX3YjBEQ7MqpNk1abN//7UP//ZqAL/Yw00YBTKW8043NAQTKsU9Q8MyGDMCQUZzTi0zmYErUyIuB04Yk2jyEZoTDgxmvGyEShgkkepNSMV1UsNU8DTKTf9I8DFBQIErJzrOBo7gLEnqB+lADMEHQn+nvx////3jS/Hl1kjJsUF0IWo2YdtuFKGo36wjLxrv8eAPq0AiiMA6YcnSZfD6Y+DODj9M4DqMTg3AhUGK0UmcBmmlhhGfh8mMwFGYRVmHA9mAwZmNIdGWoHoDghcKoDPmhHEM3bQeM9AGSJuggKgjwpMMBygayNy9FSxnz40vMsWHismjrSRAOMuZHjL/4g15pNVAGBgeERZ8+sn3+faO23XJUfqY1NgAAP/IA4pgAaCGMyosNaFDUgsXjDqb0DIJtdkZ60GxxxhbQa88hBgSqnimbzRjEAHUwm//ugZBmOY6IYTTt50yhxowmja3lFDqxhNG3zROGwC+adreUUTPpBQQJeCwpMKYYcdgIHK2dKDISy/AEOHDnN0HQqG4FAq+/ctW8W2RPo6TybH6nvJy8g62pmG07kvfFtKkLMF3vAH/sYqRNgRiygiKGUugrYcAmcWCcMSQWwc8mKWIMXx6HNTWDFTMmEUNTVQDPjJBKBzLcEYAGhARQF2SNAAKpC5yFKGgcIUBiIgOCEaJfi9gz9MSMp6sUp2868bZsTQxwlV21qa0emfUkImD5H3J/Z5RWjAbGUDwVSz0RY61BMrKThxbDk6IxaaXHZ2kKmJCiLSgWmJiYxnADnbDmGmm0DmQYmIEkIoIPGGumXSmjeP+ZsYFTgCEDR4ChxwmRBjgswqVWeXfAINYkg7BSP77Ikxed8IXkUDhdoaUfJe9lnWYrw+l9/2tvg8gD8NYMsYEYwx48xPE4gAFAzEpQewOOlTU0UgKjBRxJ8ZRCEVBRQjybhw6wHRmqFLUhTrILXgX0WfX4gARyNIUcSOJk501SMwBw7FopnAIwcggYM6wf6rmil7kuTY17VvuQ+++5Hx2qxqkrVgAAPtGARAaOGFEoDj8GVAyhCTuQWMtkI08DDGRvORp81ACTiZ7M6JswApDAK9MHjkzSLQUkM2aPuJECMHOgxsPOzCWSk4IExoh5jBzkmBAma//ugRCiEZB0YTDuaw7iC5tmtbyJ7D80JM03hVGoOlKZdzQm0UIymTxGISIKmAo30unB2U6g8DnM1Gg0/tchSlppaMB0jygDUeDEedNKc6fS3fUHjQ5tkAAAAAAH/sAMpCi8ppDYa+QEV4ZBLmQJRs42RQps1Sa1EnWSJxLccqHmYNBp7iZEYmhjo0ay0xYhcGIJaEZI8mdX50RArUzHA4ohJGAgAeeGQgVDExkIWEW/jyVVxkhTYaGbTn////1v0JNo62Q5lbquzHVDSPup7tFuiXj9OJTZsXqgAAE+sAig6DmKRBmYkaejmG14wmA04NWEwKxnGFhnaeZgNms8poaeF4gyFoIE8xQSMDOTLkQKARjhC10aNDCQc0E+K0IxQzRXWqGGGDlxGXHw5KVM8I0tidrMIMDQMgDwAIoqGv+Z/pY/dX7r0vRrN17z+2v13t/NqUlc9eXcGjAjad4ILxkkNGSSKYgJZgk1GCAyZmG5nEUHBHuZ/FJo5EmhWSYxC53kRogYxHCAIyVMEGC5AAEiEKa0CMGwaiMXDCFSQw0QJAYAAgiMNOTNJg6MaA0CQDXb9SAA4GMgVyrUfWkxw5//QlUkJWtzbI3cRtcRS+y87crFbnc+wg9wYIJWAAAAAv7IHBU3EEAaiGGOSAUnTFCgwdzLIG0JpqH0THh7sOHpoCrjQG8zucHrk//ugRBcN09kdzdN6U8iF40m6b5pDDsh5Nm5rKmG4jSbNvLHkyog0Y8HSDOAwMWHAYGzg4+hKNDMATQte6K5h4MVA6KoRUHE7jmcBLlt+o0qoPBw0BtEW5RCT6Ev4vDplFkvW2tmXvCfQQz5kv//oNrbAAAAA39kCuUAYUkDiRo1pMM5lz7hU05rMDCzZjkG0AyAFzm4yMEI0wIDjPwQtyBLEyZUqCR4qFzYoWBpUEygEEBSU2ighDhzRdJUBg5kXGAQdAKYEWEKFyIVYdn1gwgIlUrAq+H8aaQdV1Kgm6deYHNaLuj2MMJARcuh7ntyw6fPj1XdH6wAOxBqBg04BhmMqgIwk+TSw6MXi0weHTLApMNQsyMXTwHj1ljukj+2jgqQr1CqxnkFVA21jFCLghgg5SIBhwMW5TCcFKUAAvaShCqYoSsGGVA4C/7Rmlg5RlbSX9sUEsu////0f/Hxbu9ah7Ng0zCpzpU2kO0KAH72MdMDjCJSOVMDMIUdHTCgsKCZI2mDRJjE2eAgmrrRl6EyYxJFMzJDbQIRjDDK4wu0mADIU0xRUk2RuSOYsmSDoQpGDigRAt1WBIYHD51Y0w4KEgoJRKJr5UW7zn2s7GuAElc9X0v2ocllz/UqAAAAAP7IIPTgBQsZ8EGSJpihqZBMgI5MNIDDw4xayIoI+Qkzw85aM2zMw08zc//ugRBcMQ+gdzdN6yph8A0mqb1lTDvh3NnW9ACHbDWbet5AEwgRWkDEBwYEFmCENVGGQYIQEvCCVL39RVQBjoYOjDj0HQdklYibzCVNyMINrKKz+XZJFZP////LPWTYasetcVND6nr0IaxHObyRr2vTRl8AAAAH/sYgYxAAMhFBo2NmgzSQ84J7NkDgIfm8jh0IIaWRH3zFhuZuCYGIYj2apycJBxAlqyUYhYOEUzyAQGYAgExDj1etpKTBTQ1NBdL8MIDiQ4EHBW7jQWfDSTbQPArpUkto5dKxGOK7XrWL80hhStWS0VrXz+6z+r+kAL6wBCeYiNmAxJFXmnpYWKTISQwxANFdzsGAmszMtgxoTIqULBxlhMFxowUHOWTEnJewaVJrGUMBUAY8GJFjRpwiOgpRoMIWsIlhqQ5ihjtBC5ByHJRVaRFVgFL4rIpJI5rDn/36/lnVJV79lDmsbe17/Y6Dz1FIAAfrAFUzAwcwmXMZOjWTMdKTizQ1MjM/PzvBY3gONkMjmn8xBOMYDjGEEyMiMcHRT4ADhigdQIijsFCxlMDyGumMoOEv+/6QiAY3ETROCU0Ja8l1xu07z+uW/rdHUieL/P5w4GPlhYhSSV6kRRSWASES66VfQuo8wQAKiAxf8AAAAAAACWsAzkibJhSs1ZzJxNi5R0dIASRZ1BhOpL1Ncv+yh//uQRBYAAqodVm5nAAJi47pKzWAADkh3Nv28gCHkDWbPuZAEQt9yBQ8jjPrMGZSGT8dmD7LkV5BqAovzsDRKniEFQHh+m5U/623kT0UDACAADs4AAAAAAAIT4gHkpsx44QTTPrwrlFMgqZMrsNiYBv8J1GVKGhAGJEAKK4rQ0Qg5a+k1kTmkOW09CUHCcNq7An0UPeOT3InC8403AeDGWIqhaO8vPa5GYp3x5xgC/tJAAAH+wBqRggiBVMfFgQKGcHhzBaaPKkTSCCMzt7GCM0MiQQjQIccSGLjQ4SQ8FCWFmGQYqiKRZMHVqohbJGJ+FGEjxElFDAZHtFrImgJgaCyzeqhwe1pT7LWf6LSypcv5XdUvyI2et06gCL73GJvbss0AC/2AOcYAA4VH5lUNGHiAY0A5hQ+mK0CYvKpjIwme3qYpeByAIGFTWFxyieIR6KEwjDELI0C/oVKcQwxkHQqGDFDtER+JgX2M8QGjAwUBXpvpeg4lyJFLo9IXSduZXfHH8XjRyk8CqP2P0lRQADVBU3yVrlCIUv+tFYAABf2A//ugZAKEQ74dzbt5fDh0o7m6b1lTELh3N03zKOHUjWbpneSkNwBAkZVWnTmxlJUZonGOroLRzD08x4rM5DzBJM+OLMRTgdKm9gZjQ4d0gGjiQMFEeE0jcCNpsxwgSoMBnJkOHKGrrlLxIhFgwBaq8biTDp2yPUtjaYK2bqjTI4URFZvvz7n/FlWuZiioslCePo891h+drYAAAAL+yCOxYygtBQsCA8rBzdBkGH5jColgYcyHWBhp8ZhzxjA5q45k2oKNGSGFmzFNHpk1TWTGBGxjBAaM8pqCSCIN3T1BgjUwhVu5f1Uk7ZnWsNMUtf2dkEhhL2Vu9+1lf8J8rU8xsZ13JoM3+nPy39e9eAAAH9kCPJMFmM44YzmW0ZjwQfWnHSAxtZ+cMQmSpgbtGRrhMGZ2gYyF491TFYdM1EE1qGzDApThUkFkxo8WLAboimTXLJhYArHQvYOASwqWLOmEbDAOSbu9+ptprQ49HJDF3KlE/S0XfvVMvDetQjYne8qofv4VJ7HzjVsSrU7PRbklNvXgAAB/YxJWBmOcbg5vIBSw0kzOHKx7iFCkFmRhEEbrGmUoYyCGHtBKRi2iOtj4hqjmESWHxaooIMIoFJhHB2RmgCv1IKWqWJYBSgerSvCBguVAmGTNnekyxU9px/rMhfxKC3si9lrLWJcPvIHEtRl29WzJf/oVwAAA//uwRAGGREEdzVNc0TiHg6mqa5kpEAB3NUzvJSISDuadrmSkAD+xgtaOETcczTyjpWzhsDW4iDkSaKBRpwBAKkHNSWHGAmgpjklGlQmLIGLGnTDmIECgkiaJiCIoOABqiZMQZ+ICz8BMMHgDLBCHMIUGjJYEysHAS0DyZVZhplJSqlVLQtOfualP6zpb3iCXDAMiqAE84x+Qaoy97lvae9cgTYx3+vXcpMAAAAA/2MJWipczns6sI9Uk5YUycuDL4VM/Lcy2IjAI+P4m00mKjPhwCAkZJAhgAlGZxGbCwgAGuQQobMqwKthEYDkwjgkKlz7RMCADoJnRGEqukGLjQBYdJi8biwVqndiGVcxGBKa7j+8LL+s9CoaCjQOHyoonWMkTaUSayn2qGj1J/7dibXQAeyBiIhDC75xzEooFmAqUaCLmmkhisQRFR3oqcKjm6GpqwMYyDGYoJpwcexIjLQiI4At0MQkNBxDms4MHpwIGo7ixZfdB9K41DHdPoBRYiHbWftsxiO5c77UJHA7vRXDDnyf/PTKBgxhYwBxRgLJZP21dLtT6wa5HsI0HRSP4pAAB/ZA+INIgDCcE8aeCYcWYDDh19BGc1KcLGxoEJHBzMY3TpnIcjgUMemswWGjBRJMqULJk0APFLooliMccALSFDokqOlxOVhVAUOEijsnR2aYpYPGFZd6nYHT6l6hk5Eo9K4tfzz+j/z80l4xhYwGhaCxNk/ZX0O1PrBrke0hQdFY/iyqAAAH9gDXQuGTAw9QkGWjSZEWhkdSG/IOZ/PR0NTHMpJoBSYitGGkoMFzZ6xehIJm7EhhwMZcBjwmfJ5n/+6BkHg5D9h1OO5vKOHgDicpneTcQdHc2bm8q4i6Opg3N6OzBD0wCQBxZ9jhcxoqHYOMUXDAgViYxIiaUwCw6qjT56WKdU+c/A7+uLItVYvz9yz8fbDa3ixdV50VsYlF98500oK5CAAAABP9YKzFgZUaQwJUMT49NTNMOBXRKAMOSzSDc3cwApGNUpzqaQjRlI0WhAgBR6nSYTICYV6WWM6EzoA44NEgR2QsArGvgYKDwQUgNUKpqWy7cu1UpYEllFAkYfmBNUiPnqVo0uu9CMYNWUPi0f0k6uptrt7+v2MPqMAFeBsoLGTi+VGEY/b5owEmTbaaEYBNvziQUMykwweBb6cAnnXFpkQmb7HmAngNGC3hIgmPgZh6OYAHg+UG3A2kLqEwxdwxpCywOtEJ5MeEHhh48a52EWZjfo4ZWRDyk0wIvJYY1zV3/QCVwq1ceRuwNSyG5VCwJ1LVYkl9fu31gD7NoZrAjggBTDMKgceLZq9YHCBcZ+CGf1RuSeekyGRHxk4KbkLmzApl6oZe+G6pooHmOoKLBkSIY2IAGsGT8lAH5oGkOlheFxpow5hVRhBBhFRlAB7CRg1I9GM0raHGIfdOLPJTN3W7VWmzkqjZupLHuu0jBRby+JCJGdt7npY9CGXSH3V/5zUdvmsAAAAE/sAMCAQwMAAoLTNAHCw0IA+ZeUphqFGH/+6BEDgAEFB1OVXMgCIHjqbqt6AEOQHdPWc0CQfgPKbc5skCgyYsNBpctGiTWY8QhgQimUxoZsIJiAVhBKNp4z2zcLQFhRM4YjHjNw9Fc1DzJyGi03hYQgEV8YzBgNBMqao6MLGIS4Eksnh+N+4KjT/LAT7E2aW6X6b+1s89JW883jnJzTiX1zNTsAAAAE/sYAwQ2gygnJHIyMiy4bPVmnTBh9OQNRwMAR5ZKnD3qZ23GUrJiQaY9QG4nGAcAY8EXjGWTQoR6uODE1IbBg8SUhAVuBAMTTN2YC8E4rcxw0IMkI9x77oxfUDXlcuE/5EHh5YklwtfTfkkFEDsdncu95umLXH32ruW64uK9yQAEEAFSH4AAAAACfxgwQgUGGPkksABSOYODRhgLGXEYYwUglSjDgDMViMMFBpAdLiOPAUw6ZkrR4MIxxgyoHhwIgDV215kJNHRSM2FIry22hymdviMSVnIBtAwmGMGhO40qtZ7xh1O6MU3POIv2HWadAEAAAAAAAZf/AAAAAAC7zJSNMCh0ysmBAITEhINLD44YcDNDAADMMaiUQlQw2GgYGRg6GPRGFA0AQUcAegpANEFTQydeoYAmMiokzBgyLBYNB0ATSplWYLBxo4Y06suUmR2a0wwCBAHnOOU/r34ZusFwCVSuYdMlB0hm2qvzNcAAAAA/sYBQeMCjAUH/+7BkBo50lB1N13NgCIlDubrt6AEQJHc4bmsOofKPJxGt6YQBpgNmPhya9KxhK1Gg0iC4iPE460ZDf7PNWt8x+STQJWOFCEzYZjcLKM7rAVdCIRckyoBGhUBHxnIyLBRggyYKLmakZbAaRgCLmFhpmBMFwASKgCGkIYKAhgIIqxE+HYxYiTUFJyks4pCJTlb9VD39sWGhwJJNrNuIipeKCkzcU7HxR3/+vAAAAAP7GEwkJwUFAMdmDI5p4AZVhhwKHS5ig2FhYzB+B0EAB42fDO6ojI1Q2eXPGkNsGCFhlEgJPmUTBHwGtzEoTYEGFmwGCSoLATNBiaCdkaZdGZZKY4SCnxlQ5gQSMMTfjdDq5E0QgaPfRJpGqls9r4/EinmSd/RPo4aUP4GKOrPIpcytEtQj2QL4EYDSpEkuYFDRjkaELxMLT84eQjo6kNpUQxvBjh4pEYZNAKM0e+wEPgonjYzzhHjakgcvAS1QMx7ECBlUTUolBhIqZcOMPD4Hf5nmLlfNurOAURMZKFSh7605XIhxhRgY6uClgTX/QTnpetSa7W1JTelefE7q19q0b93+7LORGABeGEgVWA6WIDRnVZ1/xlOhoqgNonLKGhtHDanAiDMo1eXMpOAKTla1AeasgTRTBlh0gbYQ4RkxJmxAIKExoSQGrIB05iYNBmqtk18w5oaUmIMIbIwxiH8dTbQnYbouSRA0DA83/JLA/eq2hj4am1FB5FXRMdP1qYSsHqXAAAAAP7IGWjIGIFwbchCRmgIxxkyZW4nEmxwxcYWNjhOFRIzgfHEs2y4M9WwQDmZkDSjaVHYDxKNuo26TqHCBQv/7oGQghuQ7Hc5TedOofEO5ymd5KQ/4dztObych7g7mzZ3ojJWEHCSxjiMkQDGGBj5SeFB4wOQMHlzB2grBv5a5HVINLLeqryqDmzW+5yS772vSqLqoGjVJFE2z1Th0h01pNJsVY9j/Jbm4AAAAB/YBHxkBxwMYIewRKb8KmOnJ9zWaOVmAG5hxgb+bg4zNHRjidgwcsISk0yUrwQKLHiq4DfCMQo8FCTCjBko8qZoawxZEgQBgwF1DUhbZRgiMf9xYs/nfiL+v+sEoBMP4hfVosYLak/paoiKsE6Uv1CrDXi0z+jFMdAB9YEkRCEwMHwwqGHwoZqARla4GY3EfV5DfKZJ5GZGxgR2a0DmCBhtN2Iy8xdIIh8AgAtMjxS/gASCpYQ6PEHOiQBoeqrjq6AYIcLBAOeLyBCwXBRoh6jlEO4fcf1wVAmmxCAIrel/cpG/sWPudDYDYLn3X73aWmfXya0f27606xiaQRqKICgrmaI4iRTWoU12aMuBjDFzc1TaqDJyh0iZf6cEiNgzEDhrSYg8Z8MZQKERR4KNBDKAzHCTYnhGgBYA1xpBoUDuKYE+c86kilaiusHG3Dabh+ClkVcNxn8cFST8P/GHhgb29hpehi7VI2LPoCYvDKOqz1M/cgAAB/Iw1AwAA8wyBExgAUwzVkwOCcw8E0yZiM0MHUylEswBYY0UCE//7oGQUBmScRE27uzr4e8O5ymd6JRDEdzdNcyNh3I7m6c1lTMRdM4PThgsG/pjqKauBm3ggNKjIQxM1CoqDQGCzZwMwsYBhKZ2LDAELMbJFDAYBAUiBIENBIWA1+l+mRKrq5ZP35JgofI3RcCNv+/gkuFwmf/rdj9t0m60rsq7f/t1v9K+eqmVL26KWWp8argAAAAP7YIfFASwEZaRlOADEylaMsojT6A1Y9NZmSd+EQk3gU4Z48/g2sUeBAI+hihiAUCNtGAgBUFgYiSDykuZMAzEwxkxA60sOW4NucCxpuKpWRDIBTaF/uggN9oZbvLFjKIRWIxeCaju9jl3c172u/XX1DYgGXfRvcvAD2MDgMCwFVjnKANKDFobMXLc3l1TIAYM5hsz2BzfhPOatoxKGh0vGESeaDKZmkpHrSE1nCeSxHRIYRBhFD/ZjpmkGTDKDICjcgMBQPkHYQV0ZgQNaAzo4PFnATqfT/uYkALMZJI2l0D9TeoNlnm0XNoSga5LalRVRQgJ0pIP9goS/nPq9MAHsAqSmCzEIOUYBA6NZMcy6vzDylMcCIzZCTKobMx7DXycQG5Cbs6JsowM9Y4xioiYJhdgcpByRESBBjTWMooySh5M4mwx1wRzQ02BxYHmgoQVIUOht7s/mo1H3ejmkLVLH/ZM/1eTO7XNSJPtK2JDXoXKov9i6gP/7sGQAh2RKHc3rmsqYdMO5s2t5Uw/kdzcNcyNh3Y7m6b1hXAAAAAAH9jAGCxALzIIgMtBs0avjEgmMthwIJQ+1hZNmlhqAiWbTmV2jZgzXwT63DtYTdyFvxk02j0aQckDlDPNCwghyNMRQgIKbqf5aNJjnGmacpws2RhA96GnvHjX9wqbtuyosz6GJPFY6/s5HYQ7xpNiZlwWxcUYBoyVVz8UWhXcLOoIVN3tAA/kAm9oCyQKSmQKDPmuB+UwS09Y8HOyDUZ6uHEFRjBsZGvBJGYWGITD1DAU4jDS8VEjOOHhw5jnCYxIOtsw0xOBVMelGXjcjAzaP6EqHy4C9IO7cvUkph5624KcuVG3dYrQ3fUUP60UlWKehtd35ztigdhjAAIHGGLmuZnACGDo6YcHARACGFmS2GcyVJmgomzigcCMJjIgmGiKMGYxSRjGpMQdGIwYADhgdCTCBiRzrDRRmHD6KWzATDOHBoZBWwVDDiYZHnxZaNvy3Rxt1qeakkejdR4Iw/sXk3Ir9DcMCtd/P2tlkMTN6+BqXPWLU7LbXYAexiNIc0bSYJCw0EEoWIjq4A3EpIX44ciAQ8ZrCdw8NPji3jLjjXhDAHkgB5kgCBSpNAQAytCFSjTS/qwSK5WcznDPCXALZgIhGA1AZ4UCiEqB/79yjx03RwJE2d54ce2fobnuqeRpHVWrMrr1T+udxldf/i/6agAAAAD+wBM4ChxiR8jSAHw2hONqJTfJkzFAOALwpBHug5sSYRLIw/gVMBggSUaHwuYRrCOtlESTQwxOAZTSQ5YAhR4xxIxpoCVokszoGVGh8Gy13lpqwf1z9//ugRC0GY+0yTNN4O9h647mXbyxrDhR3NO3nCmHBDuaprDIcW2CsRikkdyJAFAwxv/WjsphymPduyp+iZc9UICkeljuK2UdUAAAP7AGDGAixkwoUAQ5CGsARhhMIUU1QeNTwDF2M1E5OOFzPgIO/hTUwTQXWIpjnJSeMg0UkMNohoXkLjA94ECp7iCZTIkONRdCALIokoZKXpwspVmXXFZNiwY2dFQ4J1ZkYvtFH7SA4HxE9FArxBL4udPoYNT1MXv7IPYxacgWLjGw8ytDNAajMwsz+AMPTgAGAGaDn08SgOyZTR2CmjOESMOMxA46joFCDQB1AccHUJFhU4iqHKQxdFVhe5gaOD/JWV4lVdF+b0y81eYa7As9GMpFTVK3PqY1I8fqTDsMRndp/nX0RcC/WtWAHsYd0AFjQjA52YX6Yxkbaga0KeKOHMTOLD+Vz9qgaSM0WrgsILHjWCxoGs1k4HWXoADDegSUIrnBDvIpO6twFLTgeA+hLepmwOtrUiZjelII/hcAK0YHy5pZeP6mC6B491aIZgtd3aP51/FgN9alVjAAAAAAH9gAcRLTgE+ARxwEBkSZf8zZUZQm1dGIyxpiqacGEQSOIgPPM0cEnl2FFE9V5MPWBESRVNEA0OtLQ5Ewi20QRodInIuwrxSMocOlaQ0+XxO9PU0dlETk9mxaiv/dY5qbj//uQZDMGc64dTetbyhh2Y3m9Z3kzDaxzN01l7KGnjubRrCV0kSpOJS4RMZipZTOm0EvJKMAAAAAAH9jEy2MRSAAYFQC44FDMO04IpZGYKOGgmQUaN4o2Dzo1EAAwGaoadYwMPBBQ5SlZIGEHlknkMkBSMCsrLYm1dpqwi91LmpQxA6vZFOx2mh2SYxGVu9L6wNivtxUutq4xqWqvHvyg5q0CXWx2qwqnr/RIB7GG5P0CkgKBGNaCQY0cAyusxs81LoKTj4QDn/h5WcEovoRtntkFJAhBC2DhJdPtFYaEUQgSccRrhhTIQ9aScgM6tbzlTpxr25lSyKZUqrTg1+8Qh7j+XGUDRHMPanHpa8UhNSHpujaXRzf49UACPOSCCIY0A0ceKBRGapGdhSYZQYxOCwYRY7JUrYOIoJWmmZEgIKyFayKqwZEcHSkrJlsxlZqDqnSt1MkPFH+fx/1MYnG6UUoDY0CY0FwSF0MSJJ/paohZiybvfY9EYrvLXVbW0VIT/WrwAAAAPrGGIjxoOvMhEhpNpc6Bg7i830w2ik1EQ2S8//ugZA+Gc1obzdM6eXhpo5m9aw8/DGhtN03ph6GejabhrD1k3sEIphcyb8mgqcAEpuXhUXTDU2TCUWIR6SrDHXWUharRZxJVOqwcoRydmOdRRFteiuoCegMvVz+ICRHxij9WhH+u9ZYoXart0o/TWgRAAAAAA/2MZ5gpWg+PWWUhQAbSAe2Bcp9aPIN3gNAkyeBmcWClIKy5Dc3BcZOVMxIUQCYbKlqJ1F1ZlVrGFeAsmxhQ0WZDlQpVLCc2JTMkdnfz0ghD31LetFtaMPpbdowP77UDfbV+BNlAHsAbhJgUFg0WBSIFxYIBSpSGTVGYHj2ExRk0sASzFCkwgYqoDDjgwgClqaihZblWxBYFDi7skeFkUVFQHBHE4sgCCKPikSTZ9BxGuVtNIVG3xY4zrF7CaF+ZFx2X2lbf+zdYBIW6qDJFg4UYUQaYWZOgvwarGFUGWgHMCmgFEdxGNwAqnwl4ocX+SOHlqaLMDER9/HYZKfwLssAqTlJEApqlVTqxSqN4q1Cx97EYlPBCILHfGF9i68GUlFQGZGHC6vfa/f9CK6P1PrAAAAA/ogThYmNGGHIHZGdQeShmoGT2DExicHYny0brRhkHOOrCaj45Etx0oedhvYuHGVWf1djsyZksbft+I7GQpSnxXNzsluLCa3FU1pAm+DSX6smSe1ab3VxFWxthj//p92SU//uAZDKEUycczdM4ZChko7m6Zwk/C+hxOaxp5WFoDub1jJmswAAAAP9jELlD+IUAhMeFPVgKqm0SSCT5dUvsBum8Svh6hdBGwOK0JeTPUHFgEdmVRB+3Hbxdi5FmrdXm4ERMOBUXR0sbYFJO8iLIoCVqpv8HFLtGTeK3mBfI1zm9ui7n026vutcAAAD/sAT5GTj4AQMZaVDHDQmGmhUubcmFoY4PC0lGIqDxk6kkWTUkPCVevotDkAZjoWSiHGX5nUaGKxOp06TcLWquZ1A3xpnB69gv/tqkiFD/2e3yc8JffeTa74rdqFAAAC9bJKRTEuU9pkEbGGMJbszIbiGmTIN4DIuER5btwJSj47eKhr/rBo1tFf1njS2uw+vSvBavUtofzkU3OU9UAjSKZOfTQjAHX3diEaPe7IrGz2ha97RBqnAAAAAAB/YwNFtFMGdX5UgBx4UEFWjaBjJnqZjiZjVgQBTAMYFCDQOUw+v/+4BkFY1DFhzN6zoaeFwDebpnBk8LBHc2bWGJIWAOJumXmeThWyD0gFb0xmStrTv62lM40akEReOQryZJjIbVL9qiFZW1RxBJ+xsyWsXFtLWNPlqrvU7Vq00KrlAAAAH+RifqUyCFnAJANRszdBCYgKBAEegIoeWCzJpLzHnP4yJ/FE5IiwtlwX+lzvRNwk538fRvnpRVZNGuxW/OSOv+A8TE0aQwk72GF7Itqoo/3/r31zvtt2ZoAPkxNBswiVIUVUtAEpJiTQggAQeCcmYYie2hNUtmaYj0lgHiTVYZL3/WMrETiWCAj8aCVgkB2blgSaLrZ/3p8GV6YPRbsf51bl29mRZruiSr8s5RhabPL2AABf2AVqjbIMiIfE0WBzwGoBxyFYMSS+LPiB1PQRKJBJ8+1QJIL4Xw/ytE6QiVFHUq1TES6lLeLOq7N07cyS/LrZbYYJDb+tRxZNG161BXS3I0d6F9d1F9AgAAAP/7kGQChFKFGU5rOEsoW8OZvWcJPQr4bzmssTBhZI4m9Yel3Ff0AEw8gPZHg9yIijjJNWJE9C4kHEI4eCqYwBF3Fu01RYsbf5hLFHQhpH8TIgSEblh9KBCCaJTC326JovS2DTjj/SvYulqal9XKb1isAAAAAP+wD8hEcYo4RCImRgQcyGmFzC1IOiT8W+i4ACg6hCJkDO3cXnJI4lKyVxoGiLuq/CgJBuyIEsF9IomWcRitkVfygr14N9M+KsaxZ6jvZx9159WhGUA9LwAAQP9sCSTiBYo2YAqxIjKOa0DMVnsjLVL9Fky65bNJODHEcCJrxBEDZ4JSIrGIk7ISiQKiImVg5B9fXZmm38bSiY+i6nm2LQxCbuRbt/cIWE64t/Wrir4AAAXd2DC+Z7khIL/GZK6wM1nbD0+S8piAOHA9R4IVCLW/Q9FFMwktJgtj+ThTHQplSfbG1HUNBhgkYVus+PjWT3GWu6rpB1FQso44iKWuxcgwqKalrtt6VXCAAAAAF/bALAfwc6qAtcMADHkRVKYQkGW+TrHipFEF2/0Wzv/7gGQSBEK5HM5rDEO4WAOJvRsMDwo4bTms4SVhVY4m/ZwkfAmEEDYdMiUsPkASCeyVyy/CSgUizjK2Z1VW9G6MJenMMXWD4QoJMTW8Zi2T9zr01/+21xiAAAAAB+sAG2nuXQKFmcjYBJw1l2h2qK8OhQioC/K8BAFWJwX9UoJNx7EgKERBWoB0dloqkgSTomoyXzzlSwhNR6p12XWCDvmCl7v7KFqCTq17dYsvufXM0AAT/qAJWqFjUR4jHA6Y4IwMdkCUAoiIKD0NhxkvkL3mXK97+SSeFQmiCA4JR0PgkPsiX8sTzetirvRaf2UMSTd9WKPVmMm9xAcyssnd3bfQUIIAAX9ZBAuJmOBJJ4IEMU2U4XJEX/BRnDbcQDnkIHBglnlJJnciL8uCTgkFBcZBEWIFVAbOm5GrhbcWkT8Tt8sIgI71IHGpD1s6URayju9Ow/u/+tVyAAAAAB/WQM7YMUPBSlDDqsQsFXCY//uAZAsEUtMdTesPQlhaI3m9YelzCSR3Oaw8x6E9Dib1hI4U0BIOZOmsY4ZxIxSgqRaU+zNCeVSvNRUNqhVSkdsh0BcKR10MC596i7KMpWHO9zUxZm2xlOtL20AuwsMRSh9Cf1Ofdd0rUAAAAAr+yCKwE1UxcEjBgEzU2kwQCFuBhCvN309RILJWAiREQqVyhqlQ86SYdExMcCp0cQQGCVsShXWNQtoUEVYbBjAST9uwXvUYYLIwHZFT6Kk/5CxDvrmZkgAnP6AAF8OOLDIrkSyiKbxWNpLErk8olSLWoI5fSwvG5DlAxMw2mxUoZBYwrTEbHHEVH/bfpVW+HIZrIz9670dBew4+yrssQ80AAX3ci4kQwTTpLtga670+UvEZ3UUHQtBolD1b2Sv66sBv7wUEolHwNvYVPiKjKNwSOEZmZIJjmheGv94xCXTiblroP0+S67qlfq+xlF55AAAC/7IHIgcLRZOVWCPJlIP/+6BECQRDQB3M0wk0mGfDuZph6VcMTLEzrDCvIY0O5nWGGhxPfVPoWgWCuELQQBJ9tOVsTUg5xHEZZGnCYqJhFKZQcJ3quN2lpy5qi8uTzc2pLgNHnTx0JnCgeKCwDKPKEmtU4ISIjGBuIlOIqGre2BQyiLlKMgxGB7QAAAD/sgcBcYwsOOt85MI1r7FTgx7ThCYfI4A/iXAMh/HWvHCYSiO5VNY0C7xkjGSViiMPDqBgQzuMqxmK8K32nLTHnzxwVOlg4XFjCXoIsZcFJMSjw7BtbyKhy3MgUPoi5SjItRgcwgAAz+xhflIM3U7AoWiiI6GC8SYgMQjuWsfhNJkDMVVhWeHZZNhJeEkSxHiEj1NS68io/2uPUq6cejiKSmKYwIHf+kqPWcllYp0KIRILjlJNEY5Z4Pa3petfBJ7klv3rvtQoAAAb/YwqCoMbM4I6QiNK4MTyS0ZjJnyZMPXR1AoFYVBYZo5AWOEoYCMgOricSisXlBTLRIfVLH6Y+IWjzUioi7okE+oSE1FgmOAIWDCwqRY02tyYgLuycxYzLhlF576LE1X1VQAAAAJ39gCpV5jARUqNpKUFCATwCxeTDWQP9EYZUeV07QFCaT6NsFqOzhWeo5NbOnzj0NIe/UkuQBIIAvGamqr637rlv5KlFNCbqqrxAABL/rgv5PxpF0dYFwjTFisya2n/+2BkMQBCZh3N6wwbuEwjWbphiHUJoHc3rLzHYUaO5vWEmdze0lii8RI7arzNicXyaTC4XgqEnNYfSHZSQgMhmEd2ma+0GEpnxru+0y8IDcVd96nLNf/u/f4uqxAAAQVf7IHRqhhpyJmGMJVg0x/QD9AIkeJkmul1g/BXi+sNmJRTRGC6oHQCbu5aF/G+PkVf0pmeMNQ/cxyd9jmLmO7dWhP6r6I7e56zAAJ/9kFaFhVx6EuwROWgWmVUcJE5MdFRIl3kx3ciJkRMjgiOic/NZx0PP4zeMjiPdo7Kj+bq2srUTvoSODgBMtc5tiX0nWdSnga/fot/u3aldQAAABLv9kBQMl3/+6BkBYACfR3N7WUgCFHiub+ssAEURMc1+byAAasOJn81kACKgAiMuaSilvWSBBjtP8ie802154KkSHiM7NGjVGBeaFNaGqT88qN0Vz2vkvsbnI7EEEZ/3ZSMr1upuz3S7f/9OuuuvMFCgoAAAAKv9ED8YmMsbM7PTHBM8AOEEIwQSxBD7MQhqDO88S3RUsUEgyxS27dUnd6CF1M6rayWqtJCZgkExcFfEOhZTcrfal7mVDosz//9HM6DYxRAFoQ0VUM56LxIGgEABpbCB44cXNIFWGGJjRhQCYKKmNChiKYYSLmJj2lNjAQdE8BHTBgDEZBwlAtiqykvQwWJiQyRScRIEwWBqBSmag18mIQqYiDsxyG85imhFp34Nwl8NyKEu87U3////nbw5zrdIg972M5dL////+c3//nQ3bFumpbnpdMRGCIMhI//6QEFQgaCX//ak8x6m////+laKgmgABQaMiGV7AoEDAAAAoCMkDSRNrZEQUyyNaBUCGTWoUmcDggKiShNMQBLvNZYiHMO+YFDCmUu6RFMhdcEsKVI0o2u8uWFMOnJtgzuyakk1LS0sW5jWrS5zJVG5L4lLfh8yFf4oaATfWoJt2XX3/2gAf1VeSJHQUAkcatdmY/jARAQEKq7AS7M2oCAmFAVjagJ7ER4Gnwad5LBV4Ablu3/AAAA//yOCjvCjQr/+xBkIQ/xkRtK7xhgCBdgCW3gAAFAAAGkAAAAIAAANIAAAAR8UXFFZBXAqkxBTUUzLjk4LjKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==\n\n\n\n \"#\n \n }\n }\n}\n \n \n ", + "test-files/functions/input/named-args/single/testcase_image.baml": "test TestImageInputBase64 {\n functions [TestImageInput]\n args {\n img {\n media_type \"image/png\"\n\n base64 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\n }\n }\n}\n\ntest TestBase64URLEscape{\n functions [TestImageInput]\n args{\n img{\n url \"data:image/png;base64,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\"\n }\n }\n}\n", + "test-files/functions/output/allowed_optionals.baml": "class OptionalListAndMap {\n p string[]?\n q map?\n}\n\nfunction AllowedOptionals(optionals: OptionalListAndMap) -> OptionalListAndMap {\n client GPT4\n prompt #\"\n Return the given input:\n\n {{optionals}}\n\n {{ctx.output_format}}\n \"#\n}", + "test-files/functions/output/big-integers.baml": "\nclass BigNumbers {\n a int\n b float\n}\n\nclass CompoundBigNumbers {\n big BigNumbers\n big_nums BigNumbers[]\n another BigNumbers\n}\n\nfunction StreamBigNumbers(digits: int) -> BigNumbers {\n client GPT35\n prompt #\"\n Please make sure every integer in the output has {{ digits }} digits.\n For floats, provide a mix - from 0-10 places before the decimal point,\n and 1-10 places after the decimal point. Bet.\n\n {{ctx.output_format}}\n \"#\n}\n\nfunction StreamOneBigNumber(digits: int) -> int {\n client GPT4\n prompt #\"\n Respond with only an integer, no affirmations or prefixes or anything.\n The response should be parsable as a JSON number.\n\n Please make sure the integer has {{ digits }} digits.\n\n {{ctx.output_format}}\n \"#\n}\n\nfunction StreamUnionIntegers(digits: int) -> (int | string)[] {\n client GPT4\n prompt #\"\n Please make sure the first item is an integer,\n and there are only 2 items in the list.\n Any integers must have {{ digits }} digits.\n\n Do not put quotes around the integer. If you chose to generate\n a string, please don't make it the string representation\n of an integer. Instead use common dog names.\n\n {{ctx.output_format}}\n \"#\n}\n\nfunction StreamingCompoundNumbers(digits: int, yapping: bool) -> CompoundBigNumbers {\n client GPT4\n prompt #\"\n\n {% if yapping %}\n Please give me a friendly response before outputting json. And put the JSON\n into a fenced code block.\n {% else %}\n Respond in pure json. Don't use any English descriptions like \"Sure, I'll do that\",\n nor put the result into a fenced code block.\n\n Just output a JSON value that could be parsed as JSON.\n {% endif %}\n\n Please make sure every integer has {{ digits }} digits.\n For floats, provide a mix - from 0-10 places before the decimal point,\n and 1-10 places after the decimal point. Bet.\n\n {{ctx.output_format}}\n \"#\n}\n", + "test-files/functions/output/boolean.baml": "function FnOutputBool(input: string) -> bool {\n client GPT35\n prompt #\"\n Return \"true\"\n \"#\n}\n\ntest FnOutputBool {\n functions [FnOutputBool]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/class-dynamic.baml": "class Person {\n name string?\n hair_color Color?\n\n @@dynamic\n}\n\nenum Color {\n RED\n BLUE\n GREEN\n YELLOW\n BLACK\n WHITE\n\n @@dynamic\n}\n\nfunction ExtractPeople(text: string) -> Person[] {\n client GPT4\n prompt #\"\n {{ _.role('system') }}\n\t\t You are an expert extraction algorithm. Only extract relevant information from the text. If you do not know the value of an attribute asked to extract, return null for the attribute's value.\n\t\t \n\t\t {# This is a special macro that prints out the output schema of the function #}\n\t\t {{ ctx.output_format }} \n\t\t \n\t\t {{ _.role('user') }}\n\t\t {{text}}\n \"#\n}\n\nenum Hobby {\n SPORTS\n MUSIC\n READING\n\n @@dynamic\n}\n\n\nfunction ExtractHobby(text: string) -> Hobby[] {\n client GPT4\n prompt #\"\n {{ _.role('system') }}\n {# This is a special macro that prints out the output schema of the function #}\n {{ ctx.output_format }} \n \n {{ _.role('user') }}\n {{text}}\n \"#\n}", + "test-files/functions/output/class-list.baml": "function FnOutputClassList(input: string) -> TestOutputClass[] {\n client GPT35\n prompt #\"\n Return a JSON array that follows this schema: \n {{ctx.output_format}}\n\n JSON:\n \"#\n}\n\ntest FnOutputClassList {\n functions [FnOutputClassList]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/class-nested.baml": "class TestClassNested {\n prop1 string\n prop2 InnerClass\n}\n\nclass InnerClass {\n prop1 string\n prop2 string\n inner InnerClass2\n}\n\nclass InnerClass2 {\n prop2 int\n prop3 float\n}\n\nfunction FnOutputClassNested(input: string) -> TestClassNested {\n client GPT35\n prompt #\"\n Return a made up json blob that matches this schema:\n {{ctx.output_format}}\n ---\n\n JSON:\n \"#\n}\n\ntest FnOutputClassNested {\n functions [FnOutputClassNested]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/class-with-enum.baml": "enum EnumInClass {\n ONE\n TWO\n}\n\nclass TestClassWithEnum {\n prop1 string\n prop2 EnumInClass\n}\n\nfunction FnOutputClassWithEnum(input: string) -> TestClassWithEnum {\n client GPT35\n prompt #\"\n Return a made up json blob that matches this schema:\n {{ctx.output_format}}\n ---\n\n JSON:\n \"#\n}\n\ntest FnOutputClassWithEnum {\n functions [FnOutputClassWithEnum]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/class.baml": "class TestOutputClass {\n prop1 string @description(\"A long string with about 200 words\")\n prop2 int\n}\n\nfunction FnOutputClass(input: string) -> TestOutputClass {\n client GPT35\n prompt #\"\n Return a JSON blob with this schema: \n {{ctx.output_format}}\n\n For the prop2, always return a 540\n\n JSON:\n \"#\n}\n\ntest TestClass {\n functions [FnOutputClass]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/enum-list.baml": "function FnEnumListOutput(input: string) -> EnumOutput[] {\n client GPT35\n prompt #\"\n Print out two of these values randomly selected from the list below in a json array.\n\n {{ctx.output_format}}\n\n Answer:\n \"#\n} \n\ntest FnEnumListOutput {\n functions [FnEnumListOutput]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/enum.baml": "/// An enum with three values,\n/// ONE, TWO and THREE.\nenum EnumOutput {\n\n /// The first enum.\n ONE\n\n /// The second enum.\n TWO\n THREE\n\n @@alias(\"VALUE_ENUM\")\n}\n\nfunction FnEnumOutput(input: string) -> EnumOutput {\n client GPT35\n prompt #\"\n Choose one of these values randomly. Before you give the answer, write out an unrelated haiku about the ocean.\n\n {{ctx.output_format(prefix=null)}}\n \"#\n}\n\ntest FnEnumOutput {\n functions [FnEnumOutput]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/int.baml": "function FnOutputInt(input: string) -> int {\n client GPT35\n prompt #\"\n Return the integer 5 with no additional context.\n \"#\n}\n\ntest FnOutputInt {\n functions [FnOutputInt]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/literal-boolean.baml": "function FnOutputLiteralBool(input: string) -> false {\n client GPT35\n prompt #\"\n Return a false: {{ ctx.output_format}}\n \"#\n}\n\ntest FnOutputLiteralBool {\n functions [FnOutputLiteralBool]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/literal-int.baml": "function FnOutputLiteralInt(input: string) -> 5 {\n client GPT35\n prompt #\"\n Return an integer: {{ ctx.output_format}}\n \"#\n}\n\ntest FnOutputLiteralInt {\n functions [FnOutputLiteralInt]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/literal-or-null.baml": "class ClassForNullLiteral {\n a \"hi\"\n}\n\nfunction NullLiteralClassHello(s: string) -> ClassForNullLiteral {\n client GPT35\n prompt #\"\n Return the empty object: {}.\n \"#\n}\n\ntest NullLiteralClassHello {\n functions [NullLiteralClassHello]\n args { s \"unused\" }\n}", + "test-files/functions/output/literal-string.baml": "function FnOutputLiteralString(input: string) -> \"example output\" {\n client GPT35\n prompt #\"\n Return a string: {{ ctx.output_format}}\n \"#\n}\n\ntest FnOutputLiteralString {\n functions [FnOutputLiteralString]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/literal-unions.baml": "function LiteralUnionsTest(input: string) -> 1 | true | \"string output\" {\n client GPT35\n prompt #\"\n Return one of these values without any additional context: \n {{ctx.output_format}}\n \"#\n}\n\ntest LiteralUnionsTest {\n functions [LiteralUnionsTest]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/map-enum-key.baml": "enum MapKey {\n A\n B\n C\n}\n\nfunction InOutEnumMapKey(i1: map, i2: map) -> map {\n client \"openai/gpt-4o\"\n prompt #\"\n Merge these: {{i1}} {{i2}}\n\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/functions/output/map-literal-union-key.baml": "function InOutLiteralStringUnionMapKey(\n i1: map<\"one\" | \"two\" | (\"three\" | \"four\"), string>, \n i2: map<\"one\" | \"two\" | (\"three\" | \"four\"), string>\n) -> map<\"one\" | \"two\" | (\"three\" | \"four\"), string> {\n client \"openai/gpt-4o\"\n prompt #\"\n Merge these:\n \n {{i1}}\n \n {{i2}}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction InOutSingleLiteralStringMapKey(m: map<\"key\", string>) -> map<\"key\", string> {\n client \"openai/gpt-4o\"\n prompt #\"\n Return the same map you were given:\n \n {{m}}\n\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/functions/output/mutually-recursive-classes.baml": "class Tree {\n data int\n children Forest\n}\n\nclass Forest {\n trees Tree[]\n}\n\nclass BinaryNode {\n data int\n left BinaryNode?\n right BinaryNode?\n}\n\nfunction BuildTree(input: BinaryNode) -> Tree {\n client GPT35\n prompt #\"\n Given the input binary tree, transform it into a generic tree using the given schema.\n\n INPUT:\n {{ input }}\n\n {{ ctx.output_format }} \n \"#\n}\n\ntest TestTree {\n functions [BuildTree]\n args {\n input {\n data 2\n left {\n data 1\n left null\n right null\n }\n right {\n data 3\n left null\n right null\n }\n }\n }\n}", + "test-files/functions/output/optional-class.baml": "class ClassOptionalOutput {\n prop1 string\n prop2 string\n}\n\nfunction FnClassOptionalOutput(input: string) -> ClassOptionalOutput? {\n client GPT35\n prompt #\"\n Return a json blob for the following input:\n {{input}}\n\n {{ctx.output_format}}\n\n JSON:\n \"#\n}\n\n\nclass Blah {\n prop4 string?\n}\n\nclass ClassOptionalOutput2 {\n prop1 string?\n prop2 string?\n prop3 Blah?\n}\n\nfunction FnClassOptionalOutput2(input: string) -> ClassOptionalOutput2? {\n client GPT35\n prompt #\"\n Return a json blob for the following input:\n {{input}}\n\n {{ctx.output_format}}\n\n JSON:\n \"#\n}\n\ntest FnClassOptionalOutput2 {\n functions [FnClassOptionalOutput2, FnClassOptionalOutput]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/optional.baml": "class OptionalTest_Prop1 {\n omega_a string\n omega_b int\n}\n\nenum OptionalTest_CategoryType {\n Aleph\n Beta\n Gamma\n}\n \nclass OptionalTest_ReturnType {\n omega_1 OptionalTest_Prop1?\n omega_2 string?\n omega_3 (OptionalTest_CategoryType?)[]\n} \n \nfunction OptionalTest_Function(input: string) -> (OptionalTest_ReturnType?)[]\n{ \n client GPT35\n prompt #\"\n Return a JSON blob with this schema: \n {{ctx.output_format}}\n\n JSON:\n \"#\n}\n\ntest OptionalTest_Function {\n functions [OptionalTest_Function]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/recursive-class.baml": "class Node {\n data int\n next Node?\n}\n\nclass LinkedList {\n head Node?\n len int\n}\n\nclient O1 {\n provider \"openai\"\n options {\n model \"o1-mini\"\n default_role \"user\"\n }\n}\n\nfunction BuildLinkedList(input: int[]) -> LinkedList {\n client O1\n prompt #\"\n Build a linked list from the input array of integers.\n\n INPUT:\n {{ input }}\n\n {{ ctx.output_format }} \n \"#\n}\n\ntest TestLinkedList {\n functions [BuildLinkedList]\n args {\n input [1, 2, 3, 4, 5]\n }\n}\n", + "test-files/functions/output/recursive-type-aliases.baml": "class LinkedListAliasNode {\n value int\n next LinkedListAliasNode?\n}\n\n// Simple alias that points to recursive type.\ntype LinkedListAlias = LinkedListAliasNode\n\nfunction AliasThatPointsToRecursiveType(list: LinkedListAlias) -> LinkedListAlias {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given linked list back:\n \n {{ list }}\n \n {{ ctx.output_format }}\n \"#\n}\n\n// Class that points to an alias that points to a recursive type.\nclass ClassToRecAlias {\n list LinkedListAlias\n}\n\nfunction ClassThatPointsToRecursiveClassThroughAlias(cls: ClassToRecAlias) -> ClassToRecAlias {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given object back:\n \n {{ cls }}\n \n {{ ctx.output_format }}\n \"#\n}\n\n// This is tricky cause this class should be hoisted, but classes and aliases\n// are two different types in the AST. This test will make sure they can interop.\nclass NodeWithAliasIndirection {\n value int\n next NodeIndirection?\n}\n\ntype NodeIndirection = NodeWithAliasIndirection\n\nfunction RecursiveClassWithAliasIndirection(cls: NodeWithAliasIndirection) -> NodeWithAliasIndirection {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given object back:\n \n {{ cls }}\n \n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/functions/output/serialization-error.baml": "class DummyOutput {\n nonce string\n nonce2 string\n @@dynamic\n}\n\nfunction DummyOutputFunction(input: string) -> DummyOutput {\n client GPT35\n prompt #\"\n Say \"hello there\".\n \"#\n}", + "test-files/functions/output/string-list.baml": "function FnOutputStringList(input: string) -> string[] {\n client GPT35\n prompt #\"\n Return a list of strings in json format like [\"string1\", \"string2\", \"string3\"].\n\n JSON:\n \"#\n}\n\ntest FnOutputStringList {\n functions [FnOutputStringList]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/output/type-aliases.baml": "type Primitive = int | string | bool | float\n\ntype List = string[]\n\ntype Graph = map\n\ntype Combination = Primitive | List | Graph\n\nfunction PrimitiveAlias(p: Primitive) -> Primitive {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given value back: {{ p }}\n \"#\n}\n\nfunction MapAlias(m: Graph) -> Graph {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given Graph back:\n\n {{ m }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction NestedAlias(c: Combination) -> Combination {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given value back:\n\n {{ c }}\n\n {{ ctx.output_format }}\n \"#\n}\n\n// Test attribute merging.\ntype Currency = int @check(gt_ten, {{ this > 10 }})\ntype Amount = Currency @assert({{ this > 0 }})\n\nclass MergeAttrs {\n amount Amount @description(\"In USD\")\n}\n\n// This should be allowed.\ntype MultipleAttrs = int @assert({{ this > 0 }}) @check(gt_ten, {{ this > 10 }})\n\nfunction MergeAliasAttributes(money: int) -> MergeAttrs {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given integer in the specified format:\n\n {{ money }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction ReturnAliasWithMergedAttributes(money: Amount) -> Amount {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given integer without additional context:\n\n {{ money }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nfunction AliasWithMultipleAttrs(money: MultipleAttrs) -> MultipleAttrs {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given integer without additional context:\n\n {{ money }}\n\n {{ ctx.output_format }}\n \"#\n}\n\ntype RecursiveMapAlias = map\n\nfunction SimpleRecursiveMapAlias(input: RecursiveMapAlias) -> RecursiveMapAlias {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given value:\n\n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n\ntype RecursiveListAlias = RecursiveListAlias[]\n\nfunction SimpleRecursiveListAlias(input: RecursiveListAlias) -> RecursiveListAlias {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given JSON array:\n\n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n\ntype RecAliasOne = RecAliasTwo\ntype RecAliasTwo = RecAliasThree\ntype RecAliasThree = RecAliasOne[]\n\nfunction RecursiveAliasCycle(input: RecAliasOne) -> RecAliasOne {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given JSON array:\n\n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n\ntype JsonValue = int | string | bool | float | JsonObject | JsonArray\ntype JsonObject = map\ntype JsonArray = JsonValue[]\n\nfunction JsonTypeAliasCycle(input: JsonValue) -> JsonValue {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given input back:\n\n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n\nclass RecursiveAliasDependency {\n value JsonValue\n}\n\nfunction TakeRecAliasDep(input: RecursiveAliasDependency) -> RecursiveAliasDependency {\n client \"openai/gpt-4o\"\n prompt r#\"\n Return the given input back:\n\n {{ input }}\n\n {{ ctx.output_format }}\n \"#\n}\n", + "test-files/functions/output/unions.baml": "class UnionTest_ReturnType {\n prop1 string | bool\n prop2 (float | bool)[]\n prop3 (bool[] | int[])\n}\n\nfunction UnionTest_Function(input: string | bool) -> UnionTest_ReturnType {\n client GPT35\n prompt #\"\n Return a JSON blob with this schema: \n {{ctx.output_format}}\n\n JSON:\n \"#\n}\n\ntest UnionTest_Function {\n functions [UnionTest_Function]\n args {\n input \"example input\"\n }\n}\n", + "test-files/functions/prompts/no-chat-messages.baml": "\n\nfunction PromptTestClaude(input: string) -> string {\n client Sonnet\n prompt #\"\n Tell me a haiku about {{ input }}\n \"#\n}\n\n\nfunction PromptTestStreaming(input: string) -> string {\n client GPT35\n prompt #\"\n Tell me a short story about {{ input }}\n \"#\n}\n\ntest TestName {\n functions [PromptTestStreaming]\n args {\n input #\"\n hello world\n \"#\n }\n}\n", + "test-files/functions/prompts/with-chat-messages.baml": "\nfunction PromptTestOpenAIChat(input: string) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"system\") }}\n You are an assistant that always responds in a very excited way with emojis and also outputs this word 4 times after giving a response: {{ input }}\n \n {{ _.role(\"user\") }}\n Tell me a haiku about {{ input }}\n \"#\n}\n\nfunction PromptTestOpenAIChatNoSystem(input: string) -> string {\n client GPT35\n prompt #\"\n You are an assistant that always responds in a very excited way with emojis and also outputs this word 4 times after giving a response: {{ input }}\n \n {{ _.role(\"user\") }}\n Tell me a haiku about {{ input }}\n \"#\n}\n\nfunction PromptTestClaudeChat(input: string) -> string {\n client Claude\n prompt #\"\n {{ _.role(\"system\") }}\n You are an assistant that always responds in a very excited way with emojis and also outputs this word 4 times after giving a response: {{ input }}\n \n {{ _.role(\"user\") }}\n Tell me a haiku about {{ input }}\n \"#\n}\n\nfunction PromptTestClaudeChatNoSystem(input: string) -> string {\n client Claude\n prompt #\"\n You are an assistant that always responds in a very excited way with emojis and also outputs this word 4 times after giving a response: {{ input }}\n \n {{ _.role(\"user\") }}\n Tell me a haiku about {{ input }}\n \"#\n}\n\ntest TestSystemAndNonSystemChat1 {\n functions [PromptTestClaude, PromptTestOpenAI, PromptTestOpenAIChat, PromptTestOpenAIChatNoSystem, PromptTestClaudeChat, PromptTestClaudeChatNoSystem]\n args {\n input \"cats\"\n }\n}\n\ntest TestSystemAndNonSystemChat2 {\n functions [PromptTestClaude, PromptTestOpenAI, PromptTestOpenAIChat, PromptTestOpenAIChatNoSystem, PromptTestClaudeChat, PromptTestClaudeChatNoSystem]\n args {\n input \"lion\"\n }\n}", + "test-files/functions/v2/basic.baml": "\n\nfunction ExtractResume2(resume: string) -> Resume {\n client GPT4\n prompt #\"\n {{ _.role('system') }}\n\n Extract the following information from the resume:\n\n Resume:\n <<<<\n {{ resume }}\n <<<<\n\n Output JSON schema:\n {{ ctx.output_format }}\n\n JSON:\n \"#\n}\n\n\nclass WithReasoning {\n value string\n reasoning string @description(#\"\n Why the value is a good fit.\n \"#)\n}\n\n\nclass SearchParams {\n dateRange int? @description(#\"\n In ISO duration format, e.g. P1Y2M10D.\n \"#)\n location string[]\n jobTitle WithReasoning? @description(#\"\n An exact job title, not a general category.\n \"#)\n company WithReasoning? @description(#\"\n The exact name of the company, not a product or service.\n \"#)\n description WithReasoning[] @description(#\"\n Any specific projects or features the user is looking for.\n \"#)\n tags (Tag | string)[]\n}\n\nenum Tag {\n Security\n AI\n Blockchain\n}\n\nfunction GetQuery(query: string) -> SearchParams {\n client GPT4\n prompt #\"\n Extract the following information from the query:\n\n Query:\n <<<<\n {{ query }}\n <<<<\n\n OUTPUT_JSON_SCHEMA:\n {{ ctx.output_format }}\n\n Before OUTPUT_JSON_SCHEMA, list 5 intentions the user may have.\n --- EXAMPLES ---\n 1. \n 2. \n 3. \n 4. \n 5. \n\n {\n ... // OUTPUT_JSON_SCHEMA\n }\n \"#\n}\n\nclass RaysData {\n dataType DataType\n value Resume | Event\n}\n\nenum DataType {\n Resume\n Event\n}\n\nclass Event {\n title string\n date string\n location string\n description string\n}\n\nfunction GetDataType(text: string) -> RaysData {\n client GPT4\n prompt #\"\n Extract the relevant info.\n\n Text:\n <<<<\n {{ text }}\n <<<<\n\n Output JSON schema:\n {{ ctx.output_format }}\n\n JSON:\n \"#\n}", + "test-files/load-test/memory.baml": "\n\nclass MemoryObject {\n id string\n name string\n description string\n}\n\nclass ComplexMemoryObject {\n id string\n name string\n description string\n metadata (string | int | float)[] @description(#\"\n Additional metadata about the memory object, which can be a mix of types.\n \"#)\n}\n\nclass AnotherObject {\n id string\n thingy2 string\n thingy3 string\n}\n\nclass TestMemoryOutput {\n items (MemoryObject | ComplexMemoryObject | AnotherObject)[] @description(#\"\n Add 10 items, which can be either simple MemoryObjects or more complex MemoryObjects with metadata.\n \"#)\n more_items (MemoryObject | ComplexMemoryObject | AnotherObject)[] @description(#\"\n Add 3 more items, which can be either simple MemoryObjects or more complex MemoryObjects with metadata.\n \"#)\n}\n\n\nfunction TestMemory(input: string) -> TestMemoryOutput {\n client GPT35\n prompt #\"\n Return a json blob that matches the schema:\n {{ ctx.output_format }}\n \"#\n}\n\ntest TestName {\n functions [TestMemory]\n args {\n input #\"\n hello world\n \"#\n }\n}\n", + "test-files/providers/anthropic.baml": "function TestAnthropic(input: string) -> string {\n client Claude\n prompt #\"\n Write a nice haiku about {{ input }}\n \"#\n}\n\nfunction TestAnthropicShorthand(input: string) -> string {\n client \"anthropic/claude-3-haiku-20240307\"\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestCaching(input: string, not_cached: string) -> string {\n client ClaudeWithCaching\n prompt #\"\n {{ _.role('system', cache_control={\"type\": \"ephemeral\"}) }}\n Generate the following story\n {{ input }}\n\n {# Haiku require 2048 tokens to cache -#}\n {{ input }}\n\n {{ _.role('user') }}\n {{ not_cached }}\n \"#\n}", + "test-files/providers/aws.baml": "function TestAws(input: string) -> string {\n client AwsBedrock\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\n/// my docs\nclass UniverseQuestion {\n question string\n answer string\n}\n\nclass UniverseQuestionInput {\n question string\n}\n\nfunction TestUniverseQuestion(question: UniverseQuestionInput) -> UniverseQuestion {\n client AwsBedrock\n prompt #\"\n You are a helpful assistant that answers questions about the universe.\n\n {{ ctx.output_format }}\n\n {{ _.role(\"user\")}}\n\n Question: {{ question }}\n\n Answer:\n \"#\n}\n\n\nfunction TestAwsInvalidRegion(input: string) -> string {\n client AwsBedrockInvalidRegion\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidAccessKey(input: string) -> string {\n client AwsBedrockInvalidAccessKey\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidProfile(input: string) -> string {\n client AwsBedrockInvalidProfile\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestAwsInvalidSessionToken(input: string) -> string {\n client AwsBedrockInvalidSessionToken\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}", + "test-files/providers/azure.baml": "// Test standard Azure GPT-3.5 (should add default max_tokens)\nfunction TestAzure(input: string) -> string {\n client GPT35Azure\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model without max_tokens (should not add default)\nfunction TestAzureO1NoMaxTokens(input: string) -> string {\n client AzureO1\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_tokens (should keep user value)\nfunction TestAzureO1WithMaxTokens(input: string) -> string {\n client AzureO1WithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_completion_tokens (should keep user value)\nfunction TestAzureO1WithMaxCompletionTokens(input: string) -> string {\n client AzureO1WithMaxCompletionTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test GPT-3.5 with explicit max_tokens (should keep user value)\nfunction TestAzureWithMaxTokens(input: string) -> string {\n client GPT35AzureWithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test failure case with invalid resource name\nfunction TestAzureFailure(input: string) -> string {\n client GPT35AzureFailed\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\nclient AzureWithNullMaxTokens {\n provider azure-openai\n options {\n resource_name env.AZURE_OPENAI_RESOURCE_NAME\n deployment_id env.AZURE_OPENAI_DEPLOYMENT_ID\n api_version \"2024-02-01\"\n max_tokens null\n }\n}\n\n// Add test cases to verify the behavior\ntest TestAzureClients {\n functions [\n TestAzure,\n TestAzureO1NoMaxTokens,\n TestAzureO1WithMaxTokens,\n TestAzureWithMaxTokens,\n TestAzureO1WithMaxCompletionTokens\n ]\n args {\n input \"Cherry blossoms\"\n }\n}\n\n// Test failure case separately\ntest TestAzureFailureCase {\n functions [TestAzureFailure]\n args {\n input \"Cherry blossoms\"\n }\n}", + "test-files/providers/gemini.baml": "function TestGemini(input: string) -> string {\n client Gemini\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiSystem(input: string) -> string {\n client Gemini\n prompt #\"\n {{ _.role('system') }}\n\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiSystemAsChat(input: string) -> string {\n client Gemini\n prompt #\"\n {{ _.role('system') }} You are a helpful assistant\n\n {{_.role(\"user\")}} Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestGeminiOpenAiGeneric() -> string {\n client GeminiOpenAiGeneric\n prompt #\"{{_.role(\"system\")}} You are a helpful assistant\n {{_.role(\"user\")}} Write a poem about llamas\n \"#\n}\n\ntest TestName {\n functions [TestGeminiSystem]\n args {\n input #\"\n hello world\n \"#\n }\n}\n", + "test-files/providers/ollama.baml": "function TestOllama(input: string) -> string {\n client Ollama\n prompt #\"\n Write a nice haiku about {{ input }}\n \"#\n}", + "test-files/providers/openai.baml": "function PromptTestOpenAI(input: string) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\nfunction TestOpenAILegacyProvider(input: string) -> string {\n client GPT35LegacyProvider\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\nfunction TestOpenAIShorthand(input: string) -> string {\n client GPT35\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test standard GPT-4 (should add default max_tokens)\nfunction TestOpenAI(input: string) -> string {\n client GPT4\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model without max_tokens (should not add default)\nfunction TestOpenAIO1NoMaxTokens(input: string) -> string {\n client OpenAIO1\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_tokens (should fail)\nfunction TestOpenAIO1WithMaxTokens(input: string) -> string {\n client OpenAIO1WithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test O1 model with explicit max_completion_tokens\nfunction TestOpenAIO1WithMaxCompletionTokens(input: string) -> string {\n client OpenAIO1WithMaxCompletionTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test GPT-4 with explicit max_tokens (should keep user value)\nfunction TestOpenAIWithMaxTokens(input: string) -> string {\n client GPT4WithMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Test OpenAI with null max_tokens (should not add default)\nfunction TestOpenAIWithNullMaxTokens(input: string) -> string {\n client OpenAIWithNullMaxTokens\n prompt #\"\n {{ _.role(\"user\") }}\n Write a nice haiku, given the user input. Make sure to reference the input in the haiku.\n\n Input: {{ input }}\n \"#\n}\n\n// Add test cases to verify the behavior\ntest TestOpenAIClients {\n functions [\n TestOpenAI,\n TestOpenAIO1NoMaxTokens,\n TestOpenAIO1WithMaxTokens,\n TestOpenAIWithMaxTokens,\n TestOpenAIO1WithMaxCompletionTokens,\n TestOpenAIWithNullMaxTokens\n ]\n args {\n input \"Cherry blossoms\"\n }\n}\n\nclient OpenAIWithNullMaxTokens {\n provider openai\n options {\n api_key env.OPENAI_API_KEY\n model \"gpt-4\"\n max_tokens null\n }\n}", + "test-files/providers/tests.baml": "test TestOpenAIShorthand {\n functions [TestOpenAIShorthand]\n args {\n input \"Donkey kong and peanut butter\"\n }\n}\n\ntest TestAWS {\n functions [\n TestAws\n ]\n args {\n input \"Donkey kong and peanut butter\"\n }\n}\n\ntest TestProvider {\n functions [\n TestAnthropic, TestVertex, PromptTestOpenAI, TestAzure, TestOllama, TestGemini, TestAws,\n TestAwsInvalidRegion,\n TestOpenAIShorthand,\n TestAnthropicShorthand,\n TestAwsInvalidAccessKey,\n TestAwsInvalidProfile,\n TestAwsInvalidSessionToken\n ]\n args {\n input \"Donkey kong and peanut butter\"\n }\n}\n\ntest TestName {\n functions [TestCaching]\n args {\n input #\"\nIn a near-future society where dreams have become a tradable commodity and shared experience, a lonely and socially awkward teenager named Alex discovers they possess a rare and powerful ability to not only view but also manipulate the dreams of others. Initially thrilled by this newfound power, Alex begins subtly altering the dreams of classmates and family members, helping them overcome fears, boost confidence, or experience fantastical adventures. As Alex's skills grow, so does their influence. They start selling premium dream experiences on the black market, crafting intricate and addictive dreamscapes for wealthy clients. However, the line between dream and reality begins to blur for those exposed to Alex's creations. Some clients struggle to differentiate between their true memories and the artificial ones implanted by Alex's dream manipulation.\n\nComplications arise when a mysterious government agency takes notice of Alex's unique abilities. They offer Alex a chance to use their gift for \"the greater good,\" hinting at applications in therapy, criminal rehabilitation, and even national security. Simultaneously, an underground resistance movement reaches out, warning Alex about the dangers of dream manipulation and the potential for mass control and exploitation. Caught between these opposing forces, Alex must navigate a complex web of ethical dilemmas. They grapple with questions of free will, the nature of consciousness, and the responsibility that comes with having power over people's minds. As the consequences of their actions spiral outward, affecting the lives of loved ones and strangers alike, Alex is forced to confront the true nature of their ability and decide how—or if—it should be used.\n\nThe story explores themes of identity, the subconscious mind, the ethics of technology, and the power of imagination. It delves into the potential consequences of a world where our most private thoughts and experiences are no longer truly our own, and examines the fine line between helping others and manipulating them for personal gain or a perceived greater good. The narrative further expands on the societal implications of such abilities, questioning the moral boundaries of altering consciousness and the potential for abuse in a world where dreams can be commodified. It challenges the reader to consider the impact of technology on personal autonomy and the ethical responsibilities of those who wield such power.\n\nAs Alex's journey unfolds, they encounter various individuals whose lives have been touched by their dream manipulations, each presenting a unique perspective on the ethical quandaries at hand. From a classmate who gains newfound confidence to a wealthy client who becomes addicted to the dreamscapes, the ripple effects of Alex's actions are profound and far-reaching. The government agency's interest in Alex's abilities raises questions about the potential for state control and surveillance, while the resistance movement highlights the dangers of unchecked power and the importance of safeguarding individual freedoms.\n\nUltimately, Alex's story is one of self-discovery and moral reckoning, as they must decide whether to embrace their abilities for personal gain, align with the government's vision of a controlled utopia, or join the resistance in their fight for freedom and autonomy. The narrative invites readers to reflect on the nature of reality, the boundaries of human experience, and the ethical implications of a world where dreams are no longer private sanctuaries but shared and manipulated commodities. It also explores the psychological impact on Alex, who must deal with the burden of knowing the intimate fears and desires of others, and the isolation that comes from being unable to share their own dreams without altering them.\n\nThe story further examines the technological advancements that have made dream manipulation possible, questioning the role of innovation in society and the potential for both progress and peril. It considers the societal divide between those who can afford to buy enhanced dream experiences and those who cannot, highlighting issues of inequality and access. As Alex becomes more entangled in the web of their own making, they must confront the possibility that their actions could lead to unintended consequences, not just for themselves but for the fabric of society as a whole.\n\nIn the end, Alex's journey is a cautionary tale about the power of dreams and the responsibilities that come with wielding such influence. It serves as a reminder of the importance of ethical considerations in the face of technological advancement and the need to balance innovation with humanity. The story leaves readers pondering the true cost of a world where dreams are no longer sacred, and the potential for both wonder and danger in the uncharted territories of the mind. But it's also a story about the power of imagination and the potential for change, even in a world where our deepest thoughts are no longer our own. And it's a story about the power of choice, and the importance of fighting for the freedom to dream.\n\nIn conclusion, this story is a reflection on the power of dreams and the responsibilities that come with wielding such influence. It serves as a reminder of the importance of ethical considerations in the face of technological advancement and the need to balance innovation with humanity. The story leaves readers pondering the true cost of a world where dreams are no longer sacred, and the potential for both wonder and danger in the uncharted territories of the mind. But it's also a story about the power of imagination and the potential for change, even in a world where our deepest thoughts are no longer our own. And it's a story about the power of choice, and the importance of fighting for the freedom to dream.\n \"#\n not_cached #\"\n hello world\n \"#\n }\n}", + "test-files/providers/vertex.baml": "function TestVertex(input: string) -> string {\n client Vertex\n prompt #\"\n Write a nice short story about {{ input }}\n \"#\n}\n\nfunction TestVertexWithSystemInstructions() -> string {\n client Vertex\n prompt #\"{{_.role(\"system\")}} You are a helpful assistant\n {{_.role(\"user\")}} Write a poem about llamas\n \"#\n}\n\ntest TestVertex {\n functions [TestVertex, TestVertexWithSystemInstructions]\n args {\n input \"a cat\"\n\n }\n}\n", + "test-files/semantic_streaming/semantic_streaming.baml": "class SemanticContainer {\n sixteen_digit_number int\n string_with_twenty_words string @stream.done\n class_1 ClassWithoutDone\n class_2 ClassWithBlockDone\n class_done_needed ClassWithBlockDone @stream.not_null\n class_needed ClassWithoutDone @stream.not_null\n three_small_things SmallThing[] @description(\"Should have three items.\")\n final_string string\n}\n\nclass ClassWithoutDone {\n i_16_digits int\n s_20_words string @description(\"A string with 20 words in it\") @stream.with_state\n}\n\nclass ClassWithBlockDone {\n i_16_digits int\n s_20_words string\n @@stream.done\n}\n\nclass SmallThing {\n i_16_digits int @stream.not_null\n i_8_digits int\n}\n\nfunction MakeSemanticContainer() -> SemanticContainer {\n client GPT35\n prompt #\"\n {{ ctx.output_format }}\n \"#\n}", + "test-files/strategies/fallback-shorthand.baml": "\nclient FallbackToShorthand {\n provider fallback\n options {\n strategy [\n \"openai/does-not-exist\",\n \"openai/gpt-4o-mini\"\n ]\n }\n}\n\n\nfunction TestFallbackToShorthand(input: string) -> string {\n client FallbackToShorthand\n // TODO make it return the client name instead\n prompt #\"\n Say a haiku about {{input}}.\n \"#\n}\n\ntest TestProvider_FallbackToShorthand {\n functions [\n TestFallbackToShorthand\n ]\n args {\n input \"Donkey kong and peanut butter\"\n }\n}\n", + "test-files/strategies/fallback.baml": "// Happy path fallbacks.\nclient FaultyClient {\n provider openai\n options {\n model unknown-model\n api_key env.OPENAI_API_KEY\n }\n}\n\n\nclient FallbackClient {\n provider fallback\n options {\n // first 2 clients are expected to fail.\n strategy [\n FaultyClient,\n RetryClientConstant,\n GPT35\n Gemini\n\n ]\n }\n}\n\nfunction TestFallbackClient() -> string {\n client FallbackClient\n // TODO make it return the client name instead\n prompt #\"\n Say a haiku about mexico.\n \"#\n}\n\n// Fallbacks should fail gracefully.\nclient FaultyAzureClient {\n provider azure-openai\n options {\n model unknown-model\n resource_name \"unknown-resource-id\"\n deployment_id \"unknown-deployment-id\"\n }\n}\n\nclient SingleFallbackClient {\n provider fallback\n options {\n // first 2 clients are expected to fail.\n strategy [\n FaultyAzureClient\n ]\n }\n}\n\nfunction TestSingleFallbackClient() -> string {\n client SingleFallbackClient\n // TODO make it return the client name instead\n prompt #\"\n Say a haiku about mexico.\n \"#\n}\n", + "test-files/strategies/retry.baml": "\nretry_policy Exponential {\n max_retries 3\n strategy {\n type exponential_backoff\n }\n}\n\nretry_policy Constant {\n max_retries 3\n strategy {\n type constant_delay\n delay_ms 100\n }\n}\n\nclient RetryClientConstant {\n provider openai\n retry_policy Constant\n options {\n model \"gpt-3.5-turbo\"\n api_key \"blah\"\n }\n}\n\nclient RetryClientExponential {\n provider openai\n retry_policy Exponential\n options {\n model \"gpt-3.5-turbo\"\n api_key \"blahh\"\n }\n}\n\nfunction TestRetryConstant() -> string {\n client RetryClientConstant\n prompt #\"\n Say a haiku\n \"#\n}\n\nfunction TestRetryExponential() -> string {\n client RetryClientExponential\n prompt #\"\n Say a haiku\n \"#\n}\n", + "test-files/strategies/roundrobin.baml": "", + "test-files/template_string/template_string.baml": "\nfunction Completion(prefix: string, suffix: string, language: string) -> string {\n client \"openai/gpt-4o\"\n prompt ##\"\n {{ _.role(\"system\", cache_control={\"type\": \"ephemeral\"}) }}\n\n You are a programmer that suggests code completions in the %INSERT-HERE% part below with {{ language }} code. Only output the code that replaces %INSERT-HERE% part, NOT THE SUFFIX OR PREFIX. Respond only with code, and with no markdown formatting.\n\n Try to complete a whole section inside curlies when you can.\n\n {% if language == \"baml\" %}\n {{ BAMLBackground2()}}\n\n Examples:\n INPUT:\n ---\n class MyObject {{\"{\"}}%INSERT-HERE%\n }\n ---\n OUTPUT:\n ---\n property string\n ---\n In this example, we just inserted one line, with tabs for a fake property to aid the user.\n\n INPUT:\n ---\n function foo(input: string) -> string {{\"{\"}} %INSERT-HERE%\n prompt #\"\n {{ \"{{ input }}\" }}\n \"#\n }\n ---\n OUTPUT:\n ---\n client \"openai/gpt-4o\"\n ---\n In this example, no need to add the prompt because it was part of the suffix after INSERT-HERE\n\n INPUT:\n OUTPUT: N/A\n In this example there was nothing to complete, so we returned N/A.\n\n Ignore the \"---\" in your outputs.\n {% endif %}\n\n\n {{ _.role(\"user\") }}\n INPUT:\n ---\n {{ prefix }}%INSERT-HERE%{{ suffix }}\n ---\n \"##\n}\n\ntest CompletionTest3 {\n functions [Completion]\n args {\n prefix ##\"function foo(input: string) -> string {\n client \"openai/gpt-4o\"\n prompt #\"\n \"##\n suffix \"\"\n language \"baml\"\n }\n}\n\ntest CompletionTest2 {\n functions [Completion]\n args {\n prefix \"function foo(input: string) -> string {\\n\"\n suffix \"\\n prompt #\\n\\\"\"\n language \"baml\"\n }\n}\n \ntemplate_string Hi(\n hello: string,\n world: string,\n) ##\"\n {{ hello }} {{ world }}\n\"##\n\ntemplate_string Hi3(\n hello: string,\n world: string,\n) #\"\n {{ hello }} {{ world }}\n\"#\n\ntemplate_string BAMLBackground2() ##\"\n \n BAML is a domain-specific language for building LLM prompts as functions.\n client \"openai/gpt-4o\"\n // prompt with jinja syntax inside here. with double curly braces for variables.\n // make sure to include: {{ \"{{ ctx.output_format }}\"}} in the prompt, which prints the output schema instructions so the LLM returns the output in the correct format (json or string, etc.). DO NOT write the output schema manually.\n prompt #\"\n \n \"#\n }\n\n 3. You do not need to specify to \"answer in JSON format\". Only write in the prompt brief instruction, and any other task-specific things to keep in mind for the task.\n 4. Write a {{ \"{{ _.role(\\\"user\\\") }}\" }} tag to indicate where the user's inputs start. So if there's a convo you can write\n #\"{{ \"{{ _.role(\\\"user\\\") }}\" }} {{ \"{{ some-variable }}\" }}#\n \n \n\n The @asserts only go in the \"output\" types. Don't use them in inputs.\n Do NOT use numbers as confidence intervals if you need to use them. Prefer an enum with descriptions or literals like \"high\", \"medium\", \"low\".\n\n Dedent all declarations.\n\"##\n\ntemplate_string BamlTests() ##\"\n // For image inputs:\n test ImageTest {\n functions [MyFunction]\n args {\n imageArg {\n file \"../images/test.png\"\n // Optional: media_type \"image/png\"\n }\n // Or using URL:\n // imageArg {\n // url \"https://example.com/image.png\"\n // }\n }\n }\n\n // For array/object inputs:\n test ComplexTest {\n functions [MyFunction]\n args {\n input {\n name \"Complex Object\"\n tags [\n \"tag1\",\n #\"\n Multi-line\n tag here\n \"#\n ]\n status PENDING\n type \"error\"\n count 100\n enabled false\n score 7.8\n }\n }\n }\n\"##\n", + "test-files/test-asserts-checks/asserts.baml": "\nfunction AssertFn(a: int) -> int {\n client GPT35\n prompt #\"\n Return the integer after {{ a }}\n\n {{ ctx.output_format }}\n \"#\n}\n\n\ntest AssertFn {\n functions [AssertFn]\n args {\n a 1\n }\n // test syntax highlighting\n @@assert(test_name, {{ this[0].datetime == \"hi, thereerwc[]{}[]\"}})\n @@assert({{\"let me know if ,er\"}})\n @@assert(test_name, {{ this[0].datetime == \"Wed, 06 nov (PST)\"}})\n}\n", + "test-files/testing_pipeline/output-format.baml": "class Recipe {\n ingredients map\n recipe_type \"breakfast\" | \"dinner\"\n}\n\nclass Quantity {\n amount int | float\n unit string?\n}\n\nfunction AaaSamOutputFormat(recipe: string) -> Recipe {\n client GPT35\n prompt #\"\n Return this value back to me: {{recipe}}\n\n {{ctx.output_format(map_style='angle')}}\n \"#\n}\n\ntest MyOutput {\n functions [AaaSamOutputFormat]\n args {\n recipe #\"\n Here's a simple recipe for beef stew:\nIngredients:\n\n2 lbs beef chuck, cut into 1-inch cubes\n2 tbsp vegetable oil\n1 onion, diced\n3 carrots, sliced\n2 celery stalks, chopped\n2 potatoes, cubed\n3 cloves garlic, minced\n4 cups beef broth\n1 can (14.5 oz) diced tomatoes\n1 tbsp Worcestershire sauce\n1 tsp dried thyme\n1 bay leaf\nSalt and pepper to taste\n\nInstructions:\n\nSeason beef with salt and pepper. Heat oil in a large pot over medium-high heat. Brown the beef in batches, then set aside.\nIn the same pot, sauté onion, carrots, and celery until softened, about 5 minutes.\nAdd garlic and cook for another minute.\nReturn beef to the pot. Add broth, tomatoes, Worcestershire sauce, thyme, and bay leaf.\nBring to a boil, then reduce heat and simmer covered for 1 hour.\nAdd potatoes and continue simmering for 30-45 minutes, until beef and potatoes are tender.\nRemove bay leaf, adjust seasoning if needed, and serve hot.\n\nWould you like any additional information or variations on this recipe?\n \"#\n }\n}\n", + "test-files/testing_pipeline/resume.baml": "class Resume {\n name string\n email string\n phone string\n experience Education[]\n education string[]\n skills string[]\n}\n\nclass Education {\n institution string\n location string\n degree string\n major string[]\n graduation_date string?\n}\n\ntemplate_string AddRole(foo: string) #\"\n {{ _.role('system')}}\n You are a {{ foo }}. be nice\n\n {{ _.role('user') }}\n\"#\n\nclient TestClient {\n provider fallback\n retry_policy Constant\n options {\n strategy [\n Claude\n GPT35\n AwsBedrock\n ]\n }\n}\n\nclient Claude2 {\n provider anthropic\n options {\n model claude-3-haiku-20240307\n api_key env.FOOBAR3\n max_tokens 1000\n }\n}\n\nfunction ExtractResume(resume: string, img: image?) -> Resume {\n client Claude2\n prompt #\"\n {{ AddRole(\"Software Engineer\") }}\n\n Extract data:\n \n\n <<<<\n {{ resume }}\n <<<<\n\n {% if img %}\n {{img}}\n {% endif %}\n\n {{ ctx.output_format }}\n \"#\n}\n\ntest sam_resume {\n functions [ExtractResume]\n args {\n img {\n url \"https://avatars.githubusercontent.com/u/1016595?v=4\"\n }\n resume #\"\n Sam Lijin\n he/him | jobs@sxlijin.com | sxlijin.github.io | 111-222-3333 | sxlijin | sxlijin\n\n Experience\n Trunk\n | July 2021 - current\n Trunk Check | Senior Software Engineer | Services TL, Mar 2023 - current | IC, July 2021 - Feb 2023\n Proposed, designed, and led a team of 3 to build a web experience for Check (both a web-only onboarding flow and SaaS offerings)\n Proposed and built vulnerability scanning into Check, enabling it to compete with security products such as Snyk\n Helped grow Check from <1K users to 90K+ users by focusing on product-led growth\n Google | Sept 2017 - June 2021\n User Identity SRE | Senior Software Engineer | IC, Mar 2021 - June 2021\n Designed an incremental key rotation system to limit the global outage risk to Google SSO\n Discovered and severed an undocumented Gmail serving dependency on Identity-internal systems\n Cloud Firestore | Senior Software Engineer | EngProd TL, Aug 2019 - Feb 2021 | IC, Sept 2017 - July 2019\n Metadata TTL system: backlog of XX trillion records, sustained 1M ops/sec, peaking at 3M ops/sec\n\n Designed and implemented a logging system with novel observability and privacy requirements\n Designed and implemented Jepsen-style testing to validate correctness guarantees\n Datastore Migration: zero downtime, xM RPS and xxPB of data over xM customers and 36 datacenters\n\n Designed composite index migration, queue processing migration, progressive rollout, fast rollback, and disk stockout mitigations; implemented transaction log replay, state transitions, and dark launch process\n Designed and implemented end-to-end correctness and performance testing\n Velocity improvements for 60-eng org\n\n Proposed and implemented automated rollbacks: got us out of a 3-month release freeze and prevented 5 outages over the next 6 months\n Proposed and implemented new development and release environments spanning 30+ microservices\n Incident response for API proxy rollback affecting every Google Cloud service\n\n Google App Engine Memcache | Software Engineer | EngProd TL, Apr 2019 - July 2019\n Proposed and led execution of test coverage improvement strategy for a new control plane: reduced rollbacks and ensured strong consistency of a distributed cache serving xxM QPS\n Designed and implemented automated performance regression testing for two critical serving paths\n Used to validate Google-wide rollout of AMD CPUs, by proving a 50p latency delta of <10µs\n Implemented on shared Borg (i.e. vulnerable to noisy neighbors) with <12% variance\n Miscellaneous | Sept 2017 - June 2021\n Redesigned the Noogler training on Google-internal storage technologies & trained 2500+ Nooglers\n Landed multiple google3-wide refactorings, each spanning xxK files (e.g. SWIG to CLIF)\n Education\n Vanderbilt University (Nashville, TN) | May 2017 | B.S. in Computer Science, Mathematics, and Political Science\n\n Stuyvesant HS (New York, NY) | 2013\n\n Skills\n C++, Java, Typescript, Javascript, Python, Bash; light experience with Rust, Golang, Scheme\n gRPC, Bazel, React, Linux\n Hobbies: climbing, skiing, photography\n \"#\n }\n}\n\ntest vaibhav_resume {\n functions [ExtractResume]\n args {\n resume #\"\n Vaibhav Gupta\n linkedin/vaigup\n (972) 400-5279\n vaibhavtheory@gmail.com\n EXPERIENCE\n Google,\n Software Engineer\n Dec 2018-Present\n Seattle, WA\n •\n Augmented Reality,\n Depth Team\n •\n Technical Lead for on-device optimizations\n •\n Optimized and designed front\n facing depth algorithm\n on Pixel 4\n •\n Focus: C++ and SIMD on custom silicon\n \n \n EDUCATION\n University of Texas at Austin\n Aug 2012-May 2015\n Bachelors of Engineering, Integrated Circuits\n Bachelors of Computer Science\n \"#\n }\n}", +} +export const getBamlFiles = () => { + return fileMap; +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/partial_types.ts b/integ-tests/react/baml_client/partial_types.ts new file mode 100644 index 000000000..b11f9a051 --- /dev/null +++ b/integ-tests/react/baml_client/partial_types.ts @@ -0,0 +1,533 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { Image } from "@boundaryml/baml" + +import * as types from "./types" + +/****************************************************************************** +* +* These types are used for streaming, for when an instance of a type +* is still being built up and any of its fields is not yet fully available. +* +******************************************************************************/ + +export interface StreamState { + value: T + state: "Pending" | "Incomplete" | "Complete" +} + +export namespace partial_types { + + export interface AnotherObject { + id?: (string | null) + thingy2?: (string | null) + thingy3?: (string | null) + } + + export interface BigNumbers { + a?: (number | null) + b?: (number | null) + } + + export interface BinaryNode { + data?: (number | null) + left: ((partial_types.BinaryNode | null) | null) + right: ((partial_types.BinaryNode | null) | null) + } + + export interface Blah { + prop4: ((string | null) | null) + } + + export interface BlockConstraint { + foo?: (number | null) + bar?: (string | null) + } + + export interface BlockConstraintForParam { + bcfp?: (number | null) + bcfp2?: (string | null) + } + + export interface BookOrder { + orderId?: (string | null) + title?: (string | null) + quantity?: (number | null) + price?: (number | null) + } + + export interface ClassForNullLiteral { + a: "hi" + } + + export interface ClassOptionalOutput { + prop1?: (string | null) + prop2?: (string | null) + } + + export interface ClassOptionalOutput2 { + prop1: ((string | null) | null) + prop2: ((string | null) | null) + prop3: ((partial_types.Blah | null) | null) + } + + export interface ClassToRecAlias { + list?: (partial_types.LinkedListAliasNode | null) + } + + export interface ClassWithBlockDone { + i_16_digits?: (number | null) + s_20_words?: (string | null) + } + + export interface ClassWithImage { + myImage?: (Image | null) + param2?: (string | null) + fake_image?: (partial_types.FakeImage | null) + } + + export interface ClassWithoutDone { + i_16_digits?: (number | null) + s_20_words?: StreamState<(string | null)> + } + + export interface ComplexMemoryObject { + id?: (string | null) + name?: (string | null) + description?: (string | null) + metadata?: ((string | null) | (number | null) | (number | null) | null)[] + } + + export interface CompoundBigNumbers { + big?: (partial_types.BigNumbers | null) + big_nums?: (partial_types.BigNumbers | null)[] + another?: (partial_types.BigNumbers | null) + } + + export interface ContactInfo { + primary?: ((partial_types.PhoneNumber | null) | (partial_types.EmailAddress | null) | null) + secondary?: ((partial_types.PhoneNumber | null) | (partial_types.EmailAddress | null) | (null | null) | null) + } + + export interface CustomTaskResult { + bookOrder?: ((partial_types.BookOrder | null) | ((null | null) | null) | null) + flightConfirmation?: ((partial_types.FlightConfirmation | null) | ((null | null) | null) | null) + groceryReceipt?: ((partial_types.GroceryReceipt | null) | ((null | null) | null) | null) + } + + export interface DummyOutput { + nonce?: (string | null) + nonce2?: (string | null) + [key: string]: any; + } + + export interface DynInputOutput { + testKey?: (string | null) + [key: string]: any; + } + + export interface DynamicClassOne { + [key: string]: any; + } + + export interface DynamicClassTwo { + hi?: (string | null) + some_class?: (partial_types.SomeClassNestedDynamic | null) + status?: (string | DynEnumOne | null) + [key: string]: any; + } + + export interface DynamicOutput { + [key: string]: any; + } + + export interface Earthling { + age?: Checked<(number | null),"earth_aged" | "no_infants"> + } + + export interface Education { + institution?: (string | null) + location?: (string | null) + degree?: (string | null) + major?: (string | null)[] + graduation_date: ((string | null) | null) + } + + export interface Email { + subject?: (string | null) + body?: (string | null) + from_address?: (string | null) + } + + export interface EmailAddress { + value?: (string | null) + } + + export interface Event { + title?: (string | null) + date?: (string | null) + location?: (string | null) + description?: (string | null) + } + + export interface FakeImage { + url?: (string | null) + } + + export interface FlightConfirmation { + confirmationNumber?: (string | null) + flightNumber?: (string | null) + departureTime?: (string | null) + arrivalTime?: (string | null) + seatNumber?: (string | null) + } + + export interface FooAny { + planetary_age?: ((partial_types.Martian | null) | (partial_types.Earthling | null) | null) + certainty?: Checked<(number | null),"unreasonably_certain"> + species?: Checked<(string | null),"regex_bad" | "regex_good" | "trivial"> + } + + export interface Forest { + trees?: (partial_types.Tree | null)[] + } + + export interface FormatterTest0 { + lorem?: (string | null) + ipsum?: (string | null) + } + + export interface FormatterTest1 { + lorem?: (string | null) + ipsum?: (string | null) + } + + export interface FormatterTest2 { + lorem?: (string | null) + ipsum?: (string | null) + } + + export interface FormatterTest3 { + lorem?: (string | null) + ipsum?: (string | null) + } + + export interface GroceryReceipt { + receiptId?: (string | null) + storeName?: (string | null) + items?: ((string | null) | (number | null) | (number | null) | null)[] + totalAmount?: (number | null) + } + + export interface InnerClass { + prop1?: (string | null) + prop2?: (string | null) + inner?: (partial_types.InnerClass2 | null) + } + + export interface InnerClass2 { + prop2?: (number | null) + prop3?: (number | null) + } + + export interface InputClass { + key?: (string | null) + key2?: (string | null) + } + + export interface InputClassNested { + key?: (string | null) + nested?: (partial_types.InputClass | null) + } + + export interface LinkedList { + head: ((partial_types.Node | null) | null) + len?: (number | null) + } + + export interface LinkedListAliasNode { + value?: (number | null) + next: ((partial_types.LinkedListAliasNode | null) | null) + } + + export interface LiteralClassHello { + prop: "hello" + } + + export interface LiteralClassOne { + prop: "one" + } + + export interface LiteralClassTwo { + prop: "two" + } + + export interface MalformedConstraints { + foo?: Checked<(number | null),"foo_check"> + } + + export interface MalformedConstraints2 { + foo?: (number | null) + } + + /** + * A Martian organism with an age. + * Such a nice type. + */ + export interface Martian { + /** + * The age of the Martian in Mars years. + * So many Mars years. + */ + age?: Checked<(number | null),"young_enough"> + } + + export interface MemoryObject { + id?: (string | null) + name?: (string | null) + description?: (string | null) + } + + export interface MergeAttrs { + amount?: Checked<(number | null),"gt_ten"> + } + + export interface NamedArgsSingleClass { + key?: (string | null) + key_two?: (boolean | null) + key_three?: (number | null) + } + + export interface Nested { + prop3?: ((string | null) | ((null | null) | null) | null) + prop4?: ((string | null) | ((null | null) | null) | null) + prop20?: (partial_types.Nested2 | null) + } + + export interface Nested2 { + prop11?: ((string | null) | ((null | null) | null) | null) + prop12?: ((string | null) | ((null | null) | null) | null) + } + + export interface NestedBlockConstraint { + nbc?: Checked<(partial_types.BlockConstraint | null),"cross_field"> + } + + export interface NestedBlockConstraintForParam { + nbcfp?: (partial_types.BlockConstraintForParam | null) + } + + export interface Node { + data?: (number | null) + next: ((partial_types.Node | null) | null) + } + + export interface NodeWithAliasIndirection { + value?: (number | null) + next: ((partial_types.NodeWithAliasIndirection | null) | null) + } + + export interface OptionalListAndMap { + p: ((string | null)[] | null) + q: ((Record | null) | null) + } + + export interface OptionalTest_Prop1 { + omega_a?: (string | null) + omega_b?: (number | null) + } + + export interface OptionalTest_ReturnType { + omega_1: ((partial_types.OptionalTest_Prop1 | null) | null) + omega_2: ((string | null) | null) + omega_3?: ((OptionalTest_CategoryType | null) | null)[] + } + + export interface OrderInfo { + order_status?: (OrderStatus | null) + tracking_number: ((string | null) | null) + estimated_arrival_date: ((string | null) | null) + } + + export interface OriginalA { + value?: (number | null) + } + + export interface OriginalB { + value?: (number | null) + [key: string]: any; + } + + export interface Person { + name: ((string | null) | null) + hair_color: ((string | Color | null) | null) + [key: string]: any; + } + + export interface PhoneNumber { + value?: (string | null) + } + + export interface Quantity { + amount?: ((number | null) | (number | null) | null) + unit: ((string | null) | null) + } + + export interface RaysData { + dataType?: (DataType | null) + value?: ((partial_types.Resume | null) | (partial_types.Event | null) | null) + } + + export interface ReceiptInfo { + items?: (partial_types.ReceiptItem | null)[] + total_cost: ((number | null) | null) + venue?: ("barisa" | "ox_burger" | null) + } + + export interface ReceiptItem { + name?: (string | null) + description: ((string | null) | null) + quantity?: (number | null) + price?: (number | null) + } + + export interface Recipe { + ingredients?: (Record | null) + recipe_type?: ("breakfast" | "dinner" | null) + } + + export interface RecursiveAliasDependency { + value?: JsonValue + } + + export interface Resume { + name?: (string | null) + email?: (string | null) + phone?: (string | null) + experience?: (partial_types.Education | null)[] + education?: (string | null)[] + skills?: (string | null)[] + } + + export interface Schema { + prop1?: ((string | null) | ((null | null) | null) | null) + prop2?: ((partial_types.Nested | null) | (string | null) | null) + prop5?: ((string | null) | ((null | null) | null) | null)[] + prop6?: ((string | null) | (partial_types.Nested | null)[] | null) + nested_attrs?: ((string | null) | ((null | null) | null) | (partial_types.Nested | null) | null)[] + parens?: ((string | null) | ((null | null) | null) | null) + other_group?: ((string | null) | ((number | null) | (string | null) | null) | null) + } + + export interface SearchParams { + dateRange: ((number | null) | null) + location?: (string | null)[] + jobTitle: ((partial_types.WithReasoning | null) | null) + company: ((partial_types.WithReasoning | null) | null) + description?: (partial_types.WithReasoning | null)[] + tags?: ((Tag | null) | (string | null) | null)[] + } + + export interface SemanticContainer { + sixteen_digit_number?: (number | null) + string_with_twenty_words: string + class_1?: (partial_types.ClassWithoutDone | null) + class_2: types.ClassWithBlockDone + class_done_needed: types.ClassWithBlockDone + class_needed: partial_types.ClassWithoutDone + three_small_things?: (partial_types.SmallThing | null)[] + final_string?: (string | null) + } + + export interface SmallThing { + i_16_digits: number + i_8_digits?: (number | null) + } + + export interface SomeClassNestedDynamic { + hi?: (string | null) + [key: string]: any; + } + + export interface StringToClassEntry { + word?: (string | null) + } + + export interface TestClassAlias { + key?: (string | null) + key2?: (string | null) + key3?: (string | null) + key4?: (string | null) + key5?: (string | null) + } + + export interface TestClassNested { + prop1?: (string | null) + prop2?: (partial_types.InnerClass | null) + } + + export interface TestClassWithEnum { + prop1?: (string | null) + prop2?: (EnumInClass | null) + } + + export interface TestMemoryOutput { + items?: ((partial_types.MemoryObject | null) | (partial_types.ComplexMemoryObject | null) | (partial_types.AnotherObject | null) | null)[] + more_items?: ((partial_types.MemoryObject | null) | (partial_types.ComplexMemoryObject | null) | (partial_types.AnotherObject | null) | null)[] + } + + export interface TestOutputClass { + prop1?: (string | null) + prop2?: (number | null) + } + + export interface Tree { + data?: (number | null) + children?: (partial_types.Forest | null) + } + + export interface TwoStoriesOneTitle { + title?: (string | null) + story_a?: (string | null) + story_b?: (string | null) + } + + export interface UnionTest_ReturnType { + prop1?: ((string | null) | (boolean | null) | null) + prop2?: ((number | null) | (boolean | null) | null)[] + prop3?: ((boolean | null)[] | (number | null)[] | null) + } + + /** + * my docs + */ + export interface UniverseQuestion { + question?: (string | null) + answer?: (string | null) + } + + export interface UniverseQuestionInput { + question?: (string | null) + } + + export interface WithReasoning { + value?: (string | null) + reasoning?: (string | null) + } + +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/react/client.tsx b/integ-tests/react/baml_client/react/client.tsx new file mode 100644 index 000000000..9f5e04ef6 --- /dev/null +++ b/integ-tests/react/baml_client/react/client.tsx @@ -0,0 +1,8695 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +'use client' + +import { useCallback, useMemo, useReducer, useTransition } from 'react'; +import type { + StreamingProps, + NonStreamingProps, + StreamingHookResult, + NonStreamingHookResult, + HookProps, + PartialReturnType, + FinalReturnType, + ServerAction, + BamlStreamResponse, + ActionKey, +} from './types'; +import { BamlValidationError, BamlClientFinishReasonError } from "@boundaryml/baml/errors"; +import * as Actions from './server'; +import * as StreamingActions from './server_streaming' + +/** + * Type guard to check if the hook props are configured for streaming mode. + * + * @template TActionKey - The key of the Actions namespace. + * @param props - The hook props. + * @returns {boolean} True if the props indicate streaming mode. + */ +function isStreamingProps( + props: HookProps +): props is StreamingProps { + return props.stream === true; +} + +function isBamlError(error?: Error | BamlValidationError | BamlClientFinishReasonError): error is (BamlValidationError | BamlClientFinishReasonError) & { type: string } { + const errorType = (error as any)?.type; + return errorType === 'BamlValidationError' || errorType === 'BamlClientFinishReasonError'; +} + +interface HookState { + isSuccess: boolean; + error?: Error | BamlValidationError | BamlClientFinishReasonError; + data?: TFinal; + partialData?: TPartial; +} + +type HookStateAction = + | { type: 'START_REQUEST' } + | { type: 'SET_ERROR'; payload: Error | BamlValidationError | BamlClientFinishReasonError } + | { type: 'SET_PARTIAL'; payload: TPartial } + | { type: 'SET_FINAL'; payload: TFinal } + | { type: 'RESET' }; + +/** + * Reducer function to manage the hook state transitions. + * + * @template TPartial - The type of the partial (streaming) data. + * @template TFinal - The type of the final (non‑streaming) data. + * @param state - The current hook state. + * @param action - The action to apply. + * @returns The updated state. + */ +function hookReducer( + state: HookState, + action: HookStateAction +): HookState { + switch (action.type) { + case 'START_REQUEST': + return { + ...state, + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + }; + case 'SET_ERROR': + return { + ...state, + isSuccess: false, + error: action.payload, + data: undefined, + partialData: undefined, + }; + case 'SET_PARTIAL': + return { + ...state, + partialData: action.payload, + }; + case 'SET_FINAL': + return { + ...state, + isSuccess: true, + data: action.payload, + partialData: undefined, + }; + case 'RESET': + return { + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + }; + default: + return state; + } +} + +/** + * Base hook for executing BAML server actions, supporting both streaming and non‑streaming modes. + * + * This hook provides a unified interface for handling loading states, partial updates, errors, + * and final responses. It is designed to be used directly with any BAML server action. + * + * Features: + * - **Streaming Support:** Real‑time partial updates via `partialData`, progress indicators, and incremental UI updates. + * - **State Management:** Manages loading state (`isPending`), success/error flags, and final/partial results. + * - **Error Handling:** Supports type‑safe error handling for BamlValidationError, BamlClientFinishReasonError, and standard errors. + * + * @param Action - The server action to invoke. + * @param props - Configuration props for the hook. + * @returns An object with the current state and a `mutate` function to trigger the action. + * + * @example + * ```tsx + * const { data, error, isPending, mutate } = useBamlAction(StreamingActions.TestAws, { stream: true }); + * ``` + */ +export function useBamlAction( + action: ServerAction, + props: StreamingProps +): StreamingHookResult; + +export function useBamlAction( + action: ServerAction, + props?: NonStreamingProps +): NonStreamingHookResult; + +export function useBamlAction( + action: ServerAction, + props: HookProps = {} +): StreamingHookResult | NonStreamingHookResult { + const { onFinal, onError, onPartial } = props; + const isStreaming = isStreamingProps(props); + const [isPending, startTransition] = useTransition(); + + const [state, dispatch] = useReducer( + hookReducer, FinalReturnType>, + { + isSuccess: false, + error: undefined, + data: undefined, + partialData: undefined, + } + ); + + const mutate = useCallback( + async (...input: Parameters) => { + dispatch({ type: 'START_REQUEST' }); + try { + let response: Awaited>; + startTransition(async () => { + response = await action(...input); + if (isStreaming && response instanceof ReadableStream) { + const reader = response.getReader(); + const decoder = new TextDecoder(); + try { + while (true) { + const { value, done } = await reader.read(); + if (done) break; + if (value) { + const chunk = decoder.decode(value, { stream: true }).trim(); + try { + const parsed: BamlStreamResponse, FinalReturnType> = JSON.parse(chunk); + if (parsed.error) { + let error: Error | BamlValidationError | BamlClientFinishReasonError = new Error('Unknown error') + + if (isBamlError(parsed.error)) { + if (parsed.error?.type === 'BamlValidationError') { + error = new BamlValidationError( + parsed.error.prompt, + parsed.error.raw_output, + parsed.error.message, + ) + } else if (parsed.error.type === 'BamlClientFinishReasonError') { + error = new BamlClientFinishReasonError( + parsed.error.prompt, + parsed.error.raw_output, + parsed.error.message, + ) + } + } else { + error = new Error(parsed.error.message) + } + throw error; + } + if (parsed.partial !== undefined) { + dispatch({ type: 'SET_PARTIAL', payload: parsed.partial }); + onPartial?.(parsed.partial); + } + if (parsed.final !== undefined) { + dispatch({ type: 'SET_FINAL', payload: parsed.final }); + onFinal?.(parsed.final); + return; + } + } catch (err: unknown) { + dispatch({ type: "SET_ERROR", payload: err as Error | BamlValidationError | BamlClientFinishReasonError }); + onError?.(err as Error | BamlValidationError | BamlClientFinishReasonError); + break; + } + } + } + } finally { + reader.releaseLock(); + } + return; + } + // Non‑streaming case + dispatch({ type: 'SET_FINAL', payload: response }); + onFinal?.(response); + }); + return response; + } catch (error_: unknown) { + dispatch({ type: 'SET_ERROR', payload: error_ as Error | BamlValidationError | BamlClientFinishReasonError }); + onError?.(error_ as Error | BamlValidationError | BamlClientFinishReasonError); + throw error_; + } + }, + [action, isStreaming, onPartial, onFinal, onError] + ); + + const status = useMemo<"idle" | "pending" | "success" | "error">(() => { + if (isPending) return "pending"; + if (state.error) return "error"; + if (state.isSuccess) return "success"; + return "idle"; + }, [isPending, state.error, state.isSuccess]); + + const result = { + data: state.data, + error: state.error, + isError: !!state.error, + isSuccess: state.isSuccess, + isPending, + mutate, + status, + }; + + return { + ...result, + partialData: isStreaming ? state.partialData : undefined, + }; +} +/** + * A specialized hook for the AaaSamOutputFormat BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - recipe: string + * + * + * **Return Type:** + * - **Non‑streaming:** Recipe + * - **Streaming Partial:** partial_types.Recipe + * - **Streaming Final:** Recipe + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAaaSamOutputFormat(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAaaSamOutputFormat({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAaaSamOutputFormat( + props: StreamingProps<'AaaSamOutputFormat'> +): StreamingHookResult<'AaaSamOutputFormat'>; + +export function useAaaSamOutputFormat( + props?: NonStreamingProps<'AaaSamOutputFormat'> +): NonStreamingHookResult<'AaaSamOutputFormat'>; + +export function useAaaSamOutputFormat( + props: HookProps<'AaaSamOutputFormat'> = {} +): StreamingHookResult<'AaaSamOutputFormat'> | NonStreamingHookResult<'AaaSamOutputFormat'> { + if (props.stream) { + return useBamlAction(StreamingActions.AaaSamOutputFormat, props); + } else { + return useBamlAction(Actions.AaaSamOutputFormat, props); + } +} +/** + * A specialized hook for the AliasThatPointsToRecursiveType BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - list: LinkedListAliasNode + * + * + * **Return Type:** + * - **Non‑streaming:** LinkedListAliasNode + * - **Streaming Partial:** partial_types.LinkedListAliasNode + * - **Streaming Final:** LinkedListAliasNode + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasThatPointsToRecursiveType(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasThatPointsToRecursiveType({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasThatPointsToRecursiveType( + props: StreamingProps<'AliasThatPointsToRecursiveType'> +): StreamingHookResult<'AliasThatPointsToRecursiveType'>; + +export function useAliasThatPointsToRecursiveType( + props?: NonStreamingProps<'AliasThatPointsToRecursiveType'> +): NonStreamingHookResult<'AliasThatPointsToRecursiveType'>; + +export function useAliasThatPointsToRecursiveType( + props: HookProps<'AliasThatPointsToRecursiveType'> = {} +): StreamingHookResult<'AliasThatPointsToRecursiveType'> | NonStreamingHookResult<'AliasThatPointsToRecursiveType'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasThatPointsToRecursiveType, props); + } else { + return useBamlAction(Actions.AliasThatPointsToRecursiveType, props); + } +} +/** + * A specialized hook for the AliasWithMultipleAttrs BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - money: Checked + * + * + * **Return Type:** + * - **Non‑streaming:** Checked + * - **Streaming Partial:** Checked + * - **Streaming Final:** Checked + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasWithMultipleAttrs(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasWithMultipleAttrs({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasWithMultipleAttrs( + props: StreamingProps<'AliasWithMultipleAttrs'> +): StreamingHookResult<'AliasWithMultipleAttrs'>; + +export function useAliasWithMultipleAttrs( + props?: NonStreamingProps<'AliasWithMultipleAttrs'> +): NonStreamingHookResult<'AliasWithMultipleAttrs'>; + +export function useAliasWithMultipleAttrs( + props: HookProps<'AliasWithMultipleAttrs'> = {} +): StreamingHookResult<'AliasWithMultipleAttrs'> | NonStreamingHookResult<'AliasWithMultipleAttrs'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasWithMultipleAttrs, props); + } else { + return useBamlAction(Actions.AliasWithMultipleAttrs, props); + } +} +/** + * A specialized hook for the AliasedInputClass BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: InputClass + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasedInputClass(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasedInputClass({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasedInputClass( + props: StreamingProps<'AliasedInputClass'> +): StreamingHookResult<'AliasedInputClass'>; + +export function useAliasedInputClass( + props?: NonStreamingProps<'AliasedInputClass'> +): NonStreamingHookResult<'AliasedInputClass'>; + +export function useAliasedInputClass( + props: HookProps<'AliasedInputClass'> = {} +): StreamingHookResult<'AliasedInputClass'> | NonStreamingHookResult<'AliasedInputClass'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasedInputClass, props); + } else { + return useBamlAction(Actions.AliasedInputClass, props); + } +} +/** + * A specialized hook for the AliasedInputClass2 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: InputClass + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasedInputClass2(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasedInputClass2({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasedInputClass2( + props: StreamingProps<'AliasedInputClass2'> +): StreamingHookResult<'AliasedInputClass2'>; + +export function useAliasedInputClass2( + props?: NonStreamingProps<'AliasedInputClass2'> +): NonStreamingHookResult<'AliasedInputClass2'>; + +export function useAliasedInputClass2( + props: HookProps<'AliasedInputClass2'> = {} +): StreamingHookResult<'AliasedInputClass2'> | NonStreamingHookResult<'AliasedInputClass2'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasedInputClass2, props); + } else { + return useBamlAction(Actions.AliasedInputClass2, props); + } +} +/** + * A specialized hook for the AliasedInputClassNested BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: InputClassNested + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasedInputClassNested(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasedInputClassNested({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasedInputClassNested( + props: StreamingProps<'AliasedInputClassNested'> +): StreamingHookResult<'AliasedInputClassNested'>; + +export function useAliasedInputClassNested( + props?: NonStreamingProps<'AliasedInputClassNested'> +): NonStreamingHookResult<'AliasedInputClassNested'>; + +export function useAliasedInputClassNested( + props: HookProps<'AliasedInputClassNested'> = {} +): StreamingHookResult<'AliasedInputClassNested'> | NonStreamingHookResult<'AliasedInputClassNested'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasedInputClassNested, props); + } else { + return useBamlAction(Actions.AliasedInputClassNested, props); + } +} +/** + * A specialized hook for the AliasedInputEnum BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: AliasedEnum + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasedInputEnum(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasedInputEnum({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasedInputEnum( + props: StreamingProps<'AliasedInputEnum'> +): StreamingHookResult<'AliasedInputEnum'>; + +export function useAliasedInputEnum( + props?: NonStreamingProps<'AliasedInputEnum'> +): NonStreamingHookResult<'AliasedInputEnum'>; + +export function useAliasedInputEnum( + props: HookProps<'AliasedInputEnum'> = {} +): StreamingHookResult<'AliasedInputEnum'> | NonStreamingHookResult<'AliasedInputEnum'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasedInputEnum, props); + } else { + return useBamlAction(Actions.AliasedInputEnum, props); + } +} +/** + * A specialized hook for the AliasedInputList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: AliasedEnum[] + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAliasedInputList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAliasedInputList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAliasedInputList( + props: StreamingProps<'AliasedInputList'> +): StreamingHookResult<'AliasedInputList'>; + +export function useAliasedInputList( + props?: NonStreamingProps<'AliasedInputList'> +): NonStreamingHookResult<'AliasedInputList'>; + +export function useAliasedInputList( + props: HookProps<'AliasedInputList'> = {} +): StreamingHookResult<'AliasedInputList'> | NonStreamingHookResult<'AliasedInputList'> { + if (props.stream) { + return useBamlAction(StreamingActions.AliasedInputList, props); + } else { + return useBamlAction(Actions.AliasedInputList, props); + } +} +/** + * A specialized hook for the AllowedOptionals BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - optionals: OptionalListAndMap + * + * + * **Return Type:** + * - **Non‑streaming:** OptionalListAndMap + * - **Streaming Partial:** partial_types.OptionalListAndMap + * - **Streaming Final:** OptionalListAndMap + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAllowedOptionals(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAllowedOptionals({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAllowedOptionals( + props: StreamingProps<'AllowedOptionals'> +): StreamingHookResult<'AllowedOptionals'>; + +export function useAllowedOptionals( + props?: NonStreamingProps<'AllowedOptionals'> +): NonStreamingHookResult<'AllowedOptionals'>; + +export function useAllowedOptionals( + props: HookProps<'AllowedOptionals'> = {} +): StreamingHookResult<'AllowedOptionals'> | NonStreamingHookResult<'AllowedOptionals'> { + if (props.stream) { + return useBamlAction(StreamingActions.AllowedOptionals, props); + } else { + return useBamlAction(Actions.AllowedOptionals, props); + } +} +/** + * A specialized hook for the AssertFn BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - a: number + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAssertFn(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAssertFn({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAssertFn( + props: StreamingProps<'AssertFn'> +): StreamingHookResult<'AssertFn'>; + +export function useAssertFn( + props?: NonStreamingProps<'AssertFn'> +): NonStreamingHookResult<'AssertFn'>; + +export function useAssertFn( + props: HookProps<'AssertFn'> = {} +): StreamingHookResult<'AssertFn'> | NonStreamingHookResult<'AssertFn'> { + if (props.stream) { + return useBamlAction(StreamingActions.AssertFn, props); + } else { + return useBamlAction(Actions.AssertFn, props); + } +} +/** + * A specialized hook for the AudioInput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - aud: Audio + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useAudioInput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useAudioInput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useAudioInput( + props: StreamingProps<'AudioInput'> +): StreamingHookResult<'AudioInput'>; + +export function useAudioInput( + props?: NonStreamingProps<'AudioInput'> +): NonStreamingHookResult<'AudioInput'>; + +export function useAudioInput( + props: HookProps<'AudioInput'> = {} +): StreamingHookResult<'AudioInput'> | NonStreamingHookResult<'AudioInput'> { + if (props.stream) { + return useBamlAction(StreamingActions.AudioInput, props); + } else { + return useBamlAction(Actions.AudioInput, props); + } +} +/** + * A specialized hook for the BuildLinkedList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: number[] + * + * + * **Return Type:** + * - **Non‑streaming:** LinkedList + * - **Streaming Partial:** partial_types.LinkedList + * - **Streaming Final:** LinkedList + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useBuildLinkedList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useBuildLinkedList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useBuildLinkedList( + props: StreamingProps<'BuildLinkedList'> +): StreamingHookResult<'BuildLinkedList'>; + +export function useBuildLinkedList( + props?: NonStreamingProps<'BuildLinkedList'> +): NonStreamingHookResult<'BuildLinkedList'>; + +export function useBuildLinkedList( + props: HookProps<'BuildLinkedList'> = {} +): StreamingHookResult<'BuildLinkedList'> | NonStreamingHookResult<'BuildLinkedList'> { + if (props.stream) { + return useBamlAction(StreamingActions.BuildLinkedList, props); + } else { + return useBamlAction(Actions.BuildLinkedList, props); + } +} +/** + * A specialized hook for the BuildTree BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: BinaryNode + * + * + * **Return Type:** + * - **Non‑streaming:** Tree + * - **Streaming Partial:** partial_types.Tree + * - **Streaming Final:** Tree + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useBuildTree(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useBuildTree({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useBuildTree( + props: StreamingProps<'BuildTree'> +): StreamingHookResult<'BuildTree'>; + +export function useBuildTree( + props?: NonStreamingProps<'BuildTree'> +): NonStreamingHookResult<'BuildTree'>; + +export function useBuildTree( + props: HookProps<'BuildTree'> = {} +): StreamingHookResult<'BuildTree'> | NonStreamingHookResult<'BuildTree'> { + if (props.stream) { + return useBamlAction(StreamingActions.BuildTree, props); + } else { + return useBamlAction(Actions.BuildTree, props); + } +} +/** + * A specialized hook for the ClassThatPointsToRecursiveClassThroughAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - cls: ClassToRecAlias + * + * + * **Return Type:** + * - **Non‑streaming:** ClassToRecAlias + * - **Streaming Partial:** partial_types.ClassToRecAlias + * - **Streaming Final:** ClassToRecAlias + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useClassThatPointsToRecursiveClassThroughAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useClassThatPointsToRecursiveClassThroughAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useClassThatPointsToRecursiveClassThroughAlias( + props: StreamingProps<'ClassThatPointsToRecursiveClassThroughAlias'> +): StreamingHookResult<'ClassThatPointsToRecursiveClassThroughAlias'>; + +export function useClassThatPointsToRecursiveClassThroughAlias( + props?: NonStreamingProps<'ClassThatPointsToRecursiveClassThroughAlias'> +): NonStreamingHookResult<'ClassThatPointsToRecursiveClassThroughAlias'>; + +export function useClassThatPointsToRecursiveClassThroughAlias( + props: HookProps<'ClassThatPointsToRecursiveClassThroughAlias'> = {} +): StreamingHookResult<'ClassThatPointsToRecursiveClassThroughAlias'> | NonStreamingHookResult<'ClassThatPointsToRecursiveClassThroughAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.ClassThatPointsToRecursiveClassThroughAlias, props); + } else { + return useBamlAction(Actions.ClassThatPointsToRecursiveClassThroughAlias, props); + } +} +/** + * A specialized hook for the ClassifyDynEnumTwo BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** (string | DynEnumTwo) + * - **Streaming Partial:** (string | DynEnumTwo) + * - **Streaming Final:** (string | DynEnumTwo) + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useClassifyDynEnumTwo(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useClassifyDynEnumTwo({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useClassifyDynEnumTwo( + props: StreamingProps<'ClassifyDynEnumTwo'> +): StreamingHookResult<'ClassifyDynEnumTwo'>; + +export function useClassifyDynEnumTwo( + props?: NonStreamingProps<'ClassifyDynEnumTwo'> +): NonStreamingHookResult<'ClassifyDynEnumTwo'>; + +export function useClassifyDynEnumTwo( + props: HookProps<'ClassifyDynEnumTwo'> = {} +): StreamingHookResult<'ClassifyDynEnumTwo'> | NonStreamingHookResult<'ClassifyDynEnumTwo'> { + if (props.stream) { + return useBamlAction(StreamingActions.ClassifyDynEnumTwo, props); + } else { + return useBamlAction(Actions.ClassifyDynEnumTwo, props); + } +} +/** + * A specialized hook for the ClassifyMessage BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** Category + * - **Streaming Partial:** types.Category + * - **Streaming Final:** Category + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useClassifyMessage(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useClassifyMessage({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useClassifyMessage( + props: StreamingProps<'ClassifyMessage'> +): StreamingHookResult<'ClassifyMessage'>; + +export function useClassifyMessage( + props?: NonStreamingProps<'ClassifyMessage'> +): NonStreamingHookResult<'ClassifyMessage'>; + +export function useClassifyMessage( + props: HookProps<'ClassifyMessage'> = {} +): StreamingHookResult<'ClassifyMessage'> | NonStreamingHookResult<'ClassifyMessage'> { + if (props.stream) { + return useBamlAction(StreamingActions.ClassifyMessage, props); + } else { + return useBamlAction(Actions.ClassifyMessage, props); + } +} +/** + * A specialized hook for the ClassifyMessage2 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** Category + * - **Streaming Partial:** types.Category + * - **Streaming Final:** Category + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useClassifyMessage2(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useClassifyMessage2({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useClassifyMessage2( + props: StreamingProps<'ClassifyMessage2'> +): StreamingHookResult<'ClassifyMessage2'>; + +export function useClassifyMessage2( + props?: NonStreamingProps<'ClassifyMessage2'> +): NonStreamingHookResult<'ClassifyMessage2'>; + +export function useClassifyMessage2( + props: HookProps<'ClassifyMessage2'> = {} +): StreamingHookResult<'ClassifyMessage2'> | NonStreamingHookResult<'ClassifyMessage2'> { + if (props.stream) { + return useBamlAction(StreamingActions.ClassifyMessage2, props); + } else { + return useBamlAction(Actions.ClassifyMessage2, props); + } +} +/** + * A specialized hook for the ClassifyMessage3 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** Category + * - **Streaming Partial:** types.Category + * - **Streaming Final:** Category + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useClassifyMessage3(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useClassifyMessage3({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useClassifyMessage3( + props: StreamingProps<'ClassifyMessage3'> +): StreamingHookResult<'ClassifyMessage3'>; + +export function useClassifyMessage3( + props?: NonStreamingProps<'ClassifyMessage3'> +): NonStreamingHookResult<'ClassifyMessage3'>; + +export function useClassifyMessage3( + props: HookProps<'ClassifyMessage3'> = {} +): StreamingHookResult<'ClassifyMessage3'> | NonStreamingHookResult<'ClassifyMessage3'> { + if (props.stream) { + return useBamlAction(StreamingActions.ClassifyMessage3, props); + } else { + return useBamlAction(Actions.ClassifyMessage3, props); + } +} +/** + * A specialized hook for the Completion BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - prefix: string + * + * - suffix: string + * + * - language: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useCompletion(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useCompletion({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useCompletion( + props: StreamingProps<'Completion'> +): StreamingHookResult<'Completion'>; + +export function useCompletion( + props?: NonStreamingProps<'Completion'> +): NonStreamingHookResult<'Completion'>; + +export function useCompletion( + props: HookProps<'Completion'> = {} +): StreamingHookResult<'Completion'> | NonStreamingHookResult<'Completion'> { + if (props.stream) { + return useBamlAction(StreamingActions.Completion, props); + } else { + return useBamlAction(Actions.Completion, props); + } +} +/** + * A specialized hook for the CustomTask BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** BookOrder | FlightConfirmation | GroceryReceipt + * - **Streaming Partial:** ((partial_types.BookOrder | null) | (partial_types.FlightConfirmation | null) | (partial_types.GroceryReceipt | null)) + * - **Streaming Final:** BookOrder | FlightConfirmation | GroceryReceipt + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useCustomTask(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useCustomTask({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useCustomTask( + props: StreamingProps<'CustomTask'> +): StreamingHookResult<'CustomTask'>; + +export function useCustomTask( + props?: NonStreamingProps<'CustomTask'> +): NonStreamingHookResult<'CustomTask'>; + +export function useCustomTask( + props: HookProps<'CustomTask'> = {} +): StreamingHookResult<'CustomTask'> | NonStreamingHookResult<'CustomTask'> { + if (props.stream) { + return useBamlAction(StreamingActions.CustomTask, props); + } else { + return useBamlAction(Actions.CustomTask, props); + } +} +/** + * A specialized hook for the DescribeImage BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - img: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDescribeImage(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDescribeImage({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDescribeImage( + props: StreamingProps<'DescribeImage'> +): StreamingHookResult<'DescribeImage'>; + +export function useDescribeImage( + props?: NonStreamingProps<'DescribeImage'> +): NonStreamingHookResult<'DescribeImage'>; + +export function useDescribeImage( + props: HookProps<'DescribeImage'> = {} +): StreamingHookResult<'DescribeImage'> | NonStreamingHookResult<'DescribeImage'> { + if (props.stream) { + return useBamlAction(StreamingActions.DescribeImage, props); + } else { + return useBamlAction(Actions.DescribeImage, props); + } +} +/** + * A specialized hook for the DescribeImage2 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - classWithImage: ClassWithImage + * + * - img2: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDescribeImage2(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDescribeImage2({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDescribeImage2( + props: StreamingProps<'DescribeImage2'> +): StreamingHookResult<'DescribeImage2'>; + +export function useDescribeImage2( + props?: NonStreamingProps<'DescribeImage2'> +): NonStreamingHookResult<'DescribeImage2'>; + +export function useDescribeImage2( + props: HookProps<'DescribeImage2'> = {} +): StreamingHookResult<'DescribeImage2'> | NonStreamingHookResult<'DescribeImage2'> { + if (props.stream) { + return useBamlAction(StreamingActions.DescribeImage2, props); + } else { + return useBamlAction(Actions.DescribeImage2, props); + } +} +/** + * A specialized hook for the DescribeImage3 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - classWithImage: ClassWithImage + * + * - img2: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDescribeImage3(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDescribeImage3({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDescribeImage3( + props: StreamingProps<'DescribeImage3'> +): StreamingHookResult<'DescribeImage3'>; + +export function useDescribeImage3( + props?: NonStreamingProps<'DescribeImage3'> +): NonStreamingHookResult<'DescribeImage3'>; + +export function useDescribeImage3( + props: HookProps<'DescribeImage3'> = {} +): StreamingHookResult<'DescribeImage3'> | NonStreamingHookResult<'DescribeImage3'> { + if (props.stream) { + return useBamlAction(StreamingActions.DescribeImage3, props); + } else { + return useBamlAction(Actions.DescribeImage3, props); + } +} +/** + * A specialized hook for the DescribeImage4 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - classWithImage: ClassWithImage + * + * - img2: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDescribeImage4(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDescribeImage4({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDescribeImage4( + props: StreamingProps<'DescribeImage4'> +): StreamingHookResult<'DescribeImage4'>; + +export function useDescribeImage4( + props?: NonStreamingProps<'DescribeImage4'> +): NonStreamingHookResult<'DescribeImage4'>; + +export function useDescribeImage4( + props: HookProps<'DescribeImage4'> = {} +): StreamingHookResult<'DescribeImage4'> | NonStreamingHookResult<'DescribeImage4'> { + if (props.stream) { + return useBamlAction(StreamingActions.DescribeImage4, props); + } else { + return useBamlAction(Actions.DescribeImage4, props); + } +} +/** + * A specialized hook for the DifferentiateUnions BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** OriginalA | OriginalB + * - **Streaming Partial:** ((partial_types.OriginalA | null) | (partial_types.OriginalB | null)) + * - **Streaming Final:** OriginalA | OriginalB + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDifferentiateUnions(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDifferentiateUnions({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDifferentiateUnions( + props: StreamingProps<'DifferentiateUnions'> +): StreamingHookResult<'DifferentiateUnions'>; + +export function useDifferentiateUnions( + props?: NonStreamingProps<'DifferentiateUnions'> +): NonStreamingHookResult<'DifferentiateUnions'>; + +export function useDifferentiateUnions( + props: HookProps<'DifferentiateUnions'> = {} +): StreamingHookResult<'DifferentiateUnions'> | NonStreamingHookResult<'DifferentiateUnions'> { + if (props.stream) { + return useBamlAction(StreamingActions.DifferentiateUnions, props); + } else { + return useBamlAction(Actions.DifferentiateUnions, props); + } +} +/** + * A specialized hook for the DummyOutputFunction BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** DummyOutput + * - **Streaming Partial:** partial_types.DummyOutput + * - **Streaming Final:** DummyOutput + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDummyOutputFunction(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDummyOutputFunction({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDummyOutputFunction( + props: StreamingProps<'DummyOutputFunction'> +): StreamingHookResult<'DummyOutputFunction'>; + +export function useDummyOutputFunction( + props?: NonStreamingProps<'DummyOutputFunction'> +): NonStreamingHookResult<'DummyOutputFunction'>; + +export function useDummyOutputFunction( + props: HookProps<'DummyOutputFunction'> = {} +): StreamingHookResult<'DummyOutputFunction'> | NonStreamingHookResult<'DummyOutputFunction'> { + if (props.stream) { + return useBamlAction(StreamingActions.DummyOutputFunction, props); + } else { + return useBamlAction(Actions.DummyOutputFunction, props); + } +} +/** + * A specialized hook for the DynamicFunc BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: DynamicClassOne + * + * + * **Return Type:** + * - **Non‑streaming:** DynamicClassTwo + * - **Streaming Partial:** partial_types.DynamicClassTwo + * - **Streaming Final:** DynamicClassTwo + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDynamicFunc(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDynamicFunc({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDynamicFunc( + props: StreamingProps<'DynamicFunc'> +): StreamingHookResult<'DynamicFunc'>; + +export function useDynamicFunc( + props?: NonStreamingProps<'DynamicFunc'> +): NonStreamingHookResult<'DynamicFunc'>; + +export function useDynamicFunc( + props: HookProps<'DynamicFunc'> = {} +): StreamingHookResult<'DynamicFunc'> | NonStreamingHookResult<'DynamicFunc'> { + if (props.stream) { + return useBamlAction(StreamingActions.DynamicFunc, props); + } else { + return useBamlAction(Actions.DynamicFunc, props); + } +} +/** + * A specialized hook for the DynamicInputOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: DynInputOutput + * + * + * **Return Type:** + * - **Non‑streaming:** DynInputOutput + * - **Streaming Partial:** partial_types.DynInputOutput + * - **Streaming Final:** DynInputOutput + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDynamicInputOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDynamicInputOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDynamicInputOutput( + props: StreamingProps<'DynamicInputOutput'> +): StreamingHookResult<'DynamicInputOutput'>; + +export function useDynamicInputOutput( + props?: NonStreamingProps<'DynamicInputOutput'> +): NonStreamingHookResult<'DynamicInputOutput'>; + +export function useDynamicInputOutput( + props: HookProps<'DynamicInputOutput'> = {} +): StreamingHookResult<'DynamicInputOutput'> | NonStreamingHookResult<'DynamicInputOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.DynamicInputOutput, props); + } else { + return useBamlAction(Actions.DynamicInputOutput, props); + } +} +/** + * A specialized hook for the DynamicListInputOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: DynInputOutput[] + * + * + * **Return Type:** + * - **Non‑streaming:** DynInputOutput[] + * - **Streaming Partial:** (partial_types.DynInputOutput | null)[] + * - **Streaming Final:** DynInputOutput[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useDynamicListInputOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useDynamicListInputOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useDynamicListInputOutput( + props: StreamingProps<'DynamicListInputOutput'> +): StreamingHookResult<'DynamicListInputOutput'>; + +export function useDynamicListInputOutput( + props?: NonStreamingProps<'DynamicListInputOutput'> +): NonStreamingHookResult<'DynamicListInputOutput'>; + +export function useDynamicListInputOutput( + props: HookProps<'DynamicListInputOutput'> = {} +): StreamingHookResult<'DynamicListInputOutput'> | NonStreamingHookResult<'DynamicListInputOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.DynamicListInputOutput, props); + } else { + return useBamlAction(Actions.DynamicListInputOutput, props); + } +} +/** + * A specialized hook for the ExpectFailure BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExpectFailure(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExpectFailure({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExpectFailure( + props: StreamingProps<'ExpectFailure'> +): StreamingHookResult<'ExpectFailure'>; + +export function useExpectFailure( + props?: NonStreamingProps<'ExpectFailure'> +): NonStreamingHookResult<'ExpectFailure'>; + +export function useExpectFailure( + props: HookProps<'ExpectFailure'> = {} +): StreamingHookResult<'ExpectFailure'> | NonStreamingHookResult<'ExpectFailure'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExpectFailure, props); + } else { + return useBamlAction(Actions.ExpectFailure, props); + } +} +/** + * A specialized hook for the ExtractContactInfo BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - document: string + * + * + * **Return Type:** + * - **Non‑streaming:** ContactInfo + * - **Streaming Partial:** partial_types.ContactInfo + * - **Streaming Final:** ContactInfo + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractContactInfo(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractContactInfo({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractContactInfo( + props: StreamingProps<'ExtractContactInfo'> +): StreamingHookResult<'ExtractContactInfo'>; + +export function useExtractContactInfo( + props?: NonStreamingProps<'ExtractContactInfo'> +): NonStreamingHookResult<'ExtractContactInfo'>; + +export function useExtractContactInfo( + props: HookProps<'ExtractContactInfo'> = {} +): StreamingHookResult<'ExtractContactInfo'> | NonStreamingHookResult<'ExtractContactInfo'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractContactInfo, props); + } else { + return useBamlAction(Actions.ExtractContactInfo, props); + } +} +/** + * A specialized hook for the ExtractHobby BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - text: string + * + * + * **Return Type:** + * - **Non‑streaming:** (string | Hobby)[] + * - **Streaming Partial:** (string | Hobby | null)[] + * - **Streaming Final:** (string | Hobby)[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractHobby(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractHobby({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractHobby( + props: StreamingProps<'ExtractHobby'> +): StreamingHookResult<'ExtractHobby'>; + +export function useExtractHobby( + props?: NonStreamingProps<'ExtractHobby'> +): NonStreamingHookResult<'ExtractHobby'>; + +export function useExtractHobby( + props: HookProps<'ExtractHobby'> = {} +): StreamingHookResult<'ExtractHobby'> | NonStreamingHookResult<'ExtractHobby'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractHobby, props); + } else { + return useBamlAction(Actions.ExtractHobby, props); + } +} +/** + * A specialized hook for the ExtractNames BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string[] + * - **Streaming Partial:** (string | null)[] + * - **Streaming Final:** string[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractNames(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractNames({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractNames( + props: StreamingProps<'ExtractNames'> +): StreamingHookResult<'ExtractNames'>; + +export function useExtractNames( + props?: NonStreamingProps<'ExtractNames'> +): NonStreamingHookResult<'ExtractNames'>; + +export function useExtractNames( + props: HookProps<'ExtractNames'> = {} +): StreamingHookResult<'ExtractNames'> | NonStreamingHookResult<'ExtractNames'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractNames, props); + } else { + return useBamlAction(Actions.ExtractNames, props); + } +} +/** + * A specialized hook for the ExtractPeople BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - text: string + * + * + * **Return Type:** + * - **Non‑streaming:** Person[] + * - **Streaming Partial:** (partial_types.Person | null)[] + * - **Streaming Final:** Person[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractPeople(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractPeople({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractPeople( + props: StreamingProps<'ExtractPeople'> +): StreamingHookResult<'ExtractPeople'>; + +export function useExtractPeople( + props?: NonStreamingProps<'ExtractPeople'> +): NonStreamingHookResult<'ExtractPeople'>; + +export function useExtractPeople( + props: HookProps<'ExtractPeople'> = {} +): StreamingHookResult<'ExtractPeople'> | NonStreamingHookResult<'ExtractPeople'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractPeople, props); + } else { + return useBamlAction(Actions.ExtractPeople, props); + } +} +/** + * A specialized hook for the ExtractReceiptInfo BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - email: string + * + * - reason: "curiosity" | "personal_finance" + * + * + * **Return Type:** + * - **Non‑streaming:** ReceiptInfo + * - **Streaming Partial:** partial_types.ReceiptInfo + * - **Streaming Final:** ReceiptInfo + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractReceiptInfo(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractReceiptInfo({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractReceiptInfo( + props: StreamingProps<'ExtractReceiptInfo'> +): StreamingHookResult<'ExtractReceiptInfo'>; + +export function useExtractReceiptInfo( + props?: NonStreamingProps<'ExtractReceiptInfo'> +): NonStreamingHookResult<'ExtractReceiptInfo'>; + +export function useExtractReceiptInfo( + props: HookProps<'ExtractReceiptInfo'> = {} +): StreamingHookResult<'ExtractReceiptInfo'> | NonStreamingHookResult<'ExtractReceiptInfo'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractReceiptInfo, props); + } else { + return useBamlAction(Actions.ExtractReceiptInfo, props); + } +} +/** + * A specialized hook for the ExtractResume BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - resume: string + * + * - img (optional): Image | null + * + * + * **Return Type:** + * - **Non‑streaming:** Resume + * - **Streaming Partial:** partial_types.Resume + * - **Streaming Final:** Resume + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractResume(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractResume({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractResume( + props: StreamingProps<'ExtractResume'> +): StreamingHookResult<'ExtractResume'>; + +export function useExtractResume( + props?: NonStreamingProps<'ExtractResume'> +): NonStreamingHookResult<'ExtractResume'>; + +export function useExtractResume( + props: HookProps<'ExtractResume'> = {} +): StreamingHookResult<'ExtractResume'> | NonStreamingHookResult<'ExtractResume'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractResume, props); + } else { + return useBamlAction(Actions.ExtractResume, props); + } +} +/** + * A specialized hook for the ExtractResume2 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - resume: string + * + * + * **Return Type:** + * - **Non‑streaming:** Resume + * - **Streaming Partial:** partial_types.Resume + * - **Streaming Final:** Resume + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useExtractResume2(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useExtractResume2({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useExtractResume2( + props: StreamingProps<'ExtractResume2'> +): StreamingHookResult<'ExtractResume2'>; + +export function useExtractResume2( + props?: NonStreamingProps<'ExtractResume2'> +): NonStreamingHookResult<'ExtractResume2'>; + +export function useExtractResume2( + props: HookProps<'ExtractResume2'> = {} +): StreamingHookResult<'ExtractResume2'> | NonStreamingHookResult<'ExtractResume2'> { + if (props.stream) { + return useBamlAction(StreamingActions.ExtractResume2, props); + } else { + return useBamlAction(Actions.ExtractResume2, props); + } +} +/** + * A specialized hook for the FnClassOptionalOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** ClassOptionalOutput | null + * - **Streaming Partial:** ((partial_types.ClassOptionalOutput | null) | null) + * - **Streaming Final:** ClassOptionalOutput | null + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnClassOptionalOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnClassOptionalOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnClassOptionalOutput( + props: StreamingProps<'FnClassOptionalOutput'> +): StreamingHookResult<'FnClassOptionalOutput'>; + +export function useFnClassOptionalOutput( + props?: NonStreamingProps<'FnClassOptionalOutput'> +): NonStreamingHookResult<'FnClassOptionalOutput'>; + +export function useFnClassOptionalOutput( + props: HookProps<'FnClassOptionalOutput'> = {} +): StreamingHookResult<'FnClassOptionalOutput'> | NonStreamingHookResult<'FnClassOptionalOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnClassOptionalOutput, props); + } else { + return useBamlAction(Actions.FnClassOptionalOutput, props); + } +} +/** + * A specialized hook for the FnClassOptionalOutput2 BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** ClassOptionalOutput2 | null + * - **Streaming Partial:** ((partial_types.ClassOptionalOutput2 | null) | null) + * - **Streaming Final:** ClassOptionalOutput2 | null + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnClassOptionalOutput2(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnClassOptionalOutput2({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnClassOptionalOutput2( + props: StreamingProps<'FnClassOptionalOutput2'> +): StreamingHookResult<'FnClassOptionalOutput2'>; + +export function useFnClassOptionalOutput2( + props?: NonStreamingProps<'FnClassOptionalOutput2'> +): NonStreamingHookResult<'FnClassOptionalOutput2'>; + +export function useFnClassOptionalOutput2( + props: HookProps<'FnClassOptionalOutput2'> = {} +): StreamingHookResult<'FnClassOptionalOutput2'> | NonStreamingHookResult<'FnClassOptionalOutput2'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnClassOptionalOutput2, props); + } else { + return useBamlAction(Actions.FnClassOptionalOutput2, props); + } +} +/** + * A specialized hook for the FnEnumListOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** EnumOutput[] + * - **Streaming Partial:** (EnumOutput | null)[] + * - **Streaming Final:** EnumOutput[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnEnumListOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnEnumListOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnEnumListOutput( + props: StreamingProps<'FnEnumListOutput'> +): StreamingHookResult<'FnEnumListOutput'>; + +export function useFnEnumListOutput( + props?: NonStreamingProps<'FnEnumListOutput'> +): NonStreamingHookResult<'FnEnumListOutput'>; + +export function useFnEnumListOutput( + props: HookProps<'FnEnumListOutput'> = {} +): StreamingHookResult<'FnEnumListOutput'> | NonStreamingHookResult<'FnEnumListOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnEnumListOutput, props); + } else { + return useBamlAction(Actions.FnEnumListOutput, props); + } +} +/** + * A specialized hook for the FnEnumOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** EnumOutput + * - **Streaming Partial:** types.EnumOutput + * - **Streaming Final:** EnumOutput + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnEnumOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnEnumOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnEnumOutput( + props: StreamingProps<'FnEnumOutput'> +): StreamingHookResult<'FnEnumOutput'>; + +export function useFnEnumOutput( + props?: NonStreamingProps<'FnEnumOutput'> +): NonStreamingHookResult<'FnEnumOutput'>; + +export function useFnEnumOutput( + props: HookProps<'FnEnumOutput'> = {} +): StreamingHookResult<'FnEnumOutput'> | NonStreamingHookResult<'FnEnumOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnEnumOutput, props); + } else { + return useBamlAction(Actions.FnEnumOutput, props); + } +} +/** + * A specialized hook for the FnLiteralClassInputOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: LiteralClassHello + * + * + * **Return Type:** + * - **Non‑streaming:** LiteralClassHello + * - **Streaming Partial:** partial_types.LiteralClassHello + * - **Streaming Final:** LiteralClassHello + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnLiteralClassInputOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnLiteralClassInputOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnLiteralClassInputOutput( + props: StreamingProps<'FnLiteralClassInputOutput'> +): StreamingHookResult<'FnLiteralClassInputOutput'>; + +export function useFnLiteralClassInputOutput( + props?: NonStreamingProps<'FnLiteralClassInputOutput'> +): NonStreamingHookResult<'FnLiteralClassInputOutput'>; + +export function useFnLiteralClassInputOutput( + props: HookProps<'FnLiteralClassInputOutput'> = {} +): StreamingHookResult<'FnLiteralClassInputOutput'> | NonStreamingHookResult<'FnLiteralClassInputOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnLiteralClassInputOutput, props); + } else { + return useBamlAction(Actions.FnLiteralClassInputOutput, props); + } +} +/** + * A specialized hook for the FnLiteralUnionClassInputOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: LiteralClassOne | LiteralClassTwo + * + * + * **Return Type:** + * - **Non‑streaming:** LiteralClassOne | LiteralClassTwo + * - **Streaming Partial:** ((partial_types.LiteralClassOne | null) | (partial_types.LiteralClassTwo | null)) + * - **Streaming Final:** LiteralClassOne | LiteralClassTwo + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnLiteralUnionClassInputOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnLiteralUnionClassInputOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnLiteralUnionClassInputOutput( + props: StreamingProps<'FnLiteralUnionClassInputOutput'> +): StreamingHookResult<'FnLiteralUnionClassInputOutput'>; + +export function useFnLiteralUnionClassInputOutput( + props?: NonStreamingProps<'FnLiteralUnionClassInputOutput'> +): NonStreamingHookResult<'FnLiteralUnionClassInputOutput'>; + +export function useFnLiteralUnionClassInputOutput( + props: HookProps<'FnLiteralUnionClassInputOutput'> = {} +): StreamingHookResult<'FnLiteralUnionClassInputOutput'> | NonStreamingHookResult<'FnLiteralUnionClassInputOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnLiteralUnionClassInputOutput, props); + } else { + return useBamlAction(Actions.FnLiteralUnionClassInputOutput, props); + } +} +/** + * A specialized hook for the FnNamedArgsSingleStringOptional BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myString (optional): string | null + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnNamedArgsSingleStringOptional(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnNamedArgsSingleStringOptional({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnNamedArgsSingleStringOptional( + props: StreamingProps<'FnNamedArgsSingleStringOptional'> +): StreamingHookResult<'FnNamedArgsSingleStringOptional'>; + +export function useFnNamedArgsSingleStringOptional( + props?: NonStreamingProps<'FnNamedArgsSingleStringOptional'> +): NonStreamingHookResult<'FnNamedArgsSingleStringOptional'>; + +export function useFnNamedArgsSingleStringOptional( + props: HookProps<'FnNamedArgsSingleStringOptional'> = {} +): StreamingHookResult<'FnNamedArgsSingleStringOptional'> | NonStreamingHookResult<'FnNamedArgsSingleStringOptional'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnNamedArgsSingleStringOptional, props); + } else { + return useBamlAction(Actions.FnNamedArgsSingleStringOptional, props); + } +} +/** + * A specialized hook for the FnOutputBool BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** boolean + * - **Streaming Partial:** boolean + * - **Streaming Final:** boolean + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputBool(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputBool({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputBool( + props: StreamingProps<'FnOutputBool'> +): StreamingHookResult<'FnOutputBool'>; + +export function useFnOutputBool( + props?: NonStreamingProps<'FnOutputBool'> +): NonStreamingHookResult<'FnOutputBool'>; + +export function useFnOutputBool( + props: HookProps<'FnOutputBool'> = {} +): StreamingHookResult<'FnOutputBool'> | NonStreamingHookResult<'FnOutputBool'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputBool, props); + } else { + return useBamlAction(Actions.FnOutputBool, props); + } +} +/** + * A specialized hook for the FnOutputClass BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestOutputClass + * - **Streaming Partial:** partial_types.TestOutputClass + * - **Streaming Final:** TestOutputClass + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputClass(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputClass({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputClass( + props: StreamingProps<'FnOutputClass'> +): StreamingHookResult<'FnOutputClass'>; + +export function useFnOutputClass( + props?: NonStreamingProps<'FnOutputClass'> +): NonStreamingHookResult<'FnOutputClass'>; + +export function useFnOutputClass( + props: HookProps<'FnOutputClass'> = {} +): StreamingHookResult<'FnOutputClass'> | NonStreamingHookResult<'FnOutputClass'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputClass, props); + } else { + return useBamlAction(Actions.FnOutputClass, props); + } +} +/** + * A specialized hook for the FnOutputClassList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestOutputClass[] + * - **Streaming Partial:** (partial_types.TestOutputClass | null)[] + * - **Streaming Final:** TestOutputClass[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputClassList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputClassList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputClassList( + props: StreamingProps<'FnOutputClassList'> +): StreamingHookResult<'FnOutputClassList'>; + +export function useFnOutputClassList( + props?: NonStreamingProps<'FnOutputClassList'> +): NonStreamingHookResult<'FnOutputClassList'>; + +export function useFnOutputClassList( + props: HookProps<'FnOutputClassList'> = {} +): StreamingHookResult<'FnOutputClassList'> | NonStreamingHookResult<'FnOutputClassList'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputClassList, props); + } else { + return useBamlAction(Actions.FnOutputClassList, props); + } +} +/** + * A specialized hook for the FnOutputClassNested BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestClassNested + * - **Streaming Partial:** partial_types.TestClassNested + * - **Streaming Final:** TestClassNested + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputClassNested(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputClassNested({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputClassNested( + props: StreamingProps<'FnOutputClassNested'> +): StreamingHookResult<'FnOutputClassNested'>; + +export function useFnOutputClassNested( + props?: NonStreamingProps<'FnOutputClassNested'> +): NonStreamingHookResult<'FnOutputClassNested'>; + +export function useFnOutputClassNested( + props: HookProps<'FnOutputClassNested'> = {} +): StreamingHookResult<'FnOutputClassNested'> | NonStreamingHookResult<'FnOutputClassNested'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputClassNested, props); + } else { + return useBamlAction(Actions.FnOutputClassNested, props); + } +} +/** + * A specialized hook for the FnOutputClassWithEnum BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestClassWithEnum + * - **Streaming Partial:** partial_types.TestClassWithEnum + * - **Streaming Final:** TestClassWithEnum + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputClassWithEnum(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputClassWithEnum({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputClassWithEnum( + props: StreamingProps<'FnOutputClassWithEnum'> +): StreamingHookResult<'FnOutputClassWithEnum'>; + +export function useFnOutputClassWithEnum( + props?: NonStreamingProps<'FnOutputClassWithEnum'> +): NonStreamingHookResult<'FnOutputClassWithEnum'>; + +export function useFnOutputClassWithEnum( + props: HookProps<'FnOutputClassWithEnum'> = {} +): StreamingHookResult<'FnOutputClassWithEnum'> | NonStreamingHookResult<'FnOutputClassWithEnum'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputClassWithEnum, props); + } else { + return useBamlAction(Actions.FnOutputClassWithEnum, props); + } +} +/** + * A specialized hook for the FnOutputInt BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputInt(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputInt({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputInt( + props: StreamingProps<'FnOutputInt'> +): StreamingHookResult<'FnOutputInt'>; + +export function useFnOutputInt( + props?: NonStreamingProps<'FnOutputInt'> +): NonStreamingHookResult<'FnOutputInt'>; + +export function useFnOutputInt( + props: HookProps<'FnOutputInt'> = {} +): StreamingHookResult<'FnOutputInt'> | NonStreamingHookResult<'FnOutputInt'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputInt, props); + } else { + return useBamlAction(Actions.FnOutputInt, props); + } +} +/** + * A specialized hook for the FnOutputLiteralBool BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** false + * - **Streaming Partial:** false + * - **Streaming Final:** false + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputLiteralBool(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputLiteralBool({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputLiteralBool( + props: StreamingProps<'FnOutputLiteralBool'> +): StreamingHookResult<'FnOutputLiteralBool'>; + +export function useFnOutputLiteralBool( + props?: NonStreamingProps<'FnOutputLiteralBool'> +): NonStreamingHookResult<'FnOutputLiteralBool'>; + +export function useFnOutputLiteralBool( + props: HookProps<'FnOutputLiteralBool'> = {} +): StreamingHookResult<'FnOutputLiteralBool'> | NonStreamingHookResult<'FnOutputLiteralBool'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputLiteralBool, props); + } else { + return useBamlAction(Actions.FnOutputLiteralBool, props); + } +} +/** + * A specialized hook for the FnOutputLiteralInt BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** 5 + * - **Streaming Partial:** 5 + * - **Streaming Final:** 5 + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputLiteralInt(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputLiteralInt({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputLiteralInt( + props: StreamingProps<'FnOutputLiteralInt'> +): StreamingHookResult<'FnOutputLiteralInt'>; + +export function useFnOutputLiteralInt( + props?: NonStreamingProps<'FnOutputLiteralInt'> +): NonStreamingHookResult<'FnOutputLiteralInt'>; + +export function useFnOutputLiteralInt( + props: HookProps<'FnOutputLiteralInt'> = {} +): StreamingHookResult<'FnOutputLiteralInt'> | NonStreamingHookResult<'FnOutputLiteralInt'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputLiteralInt, props); + } else { + return useBamlAction(Actions.FnOutputLiteralInt, props); + } +} +/** + * A specialized hook for the FnOutputLiteralString BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** "example output" + * - **Streaming Partial:** "example output" + * - **Streaming Final:** "example output" + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputLiteralString(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputLiteralString({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputLiteralString( + props: StreamingProps<'FnOutputLiteralString'> +): StreamingHookResult<'FnOutputLiteralString'>; + +export function useFnOutputLiteralString( + props?: NonStreamingProps<'FnOutputLiteralString'> +): NonStreamingHookResult<'FnOutputLiteralString'>; + +export function useFnOutputLiteralString( + props: HookProps<'FnOutputLiteralString'> = {} +): StreamingHookResult<'FnOutputLiteralString'> | NonStreamingHookResult<'FnOutputLiteralString'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputLiteralString, props); + } else { + return useBamlAction(Actions.FnOutputLiteralString, props); + } +} +/** + * A specialized hook for the FnOutputStringList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string[] + * - **Streaming Partial:** (string | null)[] + * - **Streaming Final:** string[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnOutputStringList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnOutputStringList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnOutputStringList( + props: StreamingProps<'FnOutputStringList'> +): StreamingHookResult<'FnOutputStringList'>; + +export function useFnOutputStringList( + props?: NonStreamingProps<'FnOutputStringList'> +): NonStreamingHookResult<'FnOutputStringList'>; + +export function useFnOutputStringList( + props: HookProps<'FnOutputStringList'> = {} +): StreamingHookResult<'FnOutputStringList'> | NonStreamingHookResult<'FnOutputStringList'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnOutputStringList, props); + } else { + return useBamlAction(Actions.FnOutputStringList, props); + } +} +/** + * A specialized hook for the FnTestAliasedEnumOutput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestEnum + * - **Streaming Partial:** types.TestEnum + * - **Streaming Final:** TestEnum + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnTestAliasedEnumOutput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnTestAliasedEnumOutput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnTestAliasedEnumOutput( + props: StreamingProps<'FnTestAliasedEnumOutput'> +): StreamingHookResult<'FnTestAliasedEnumOutput'>; + +export function useFnTestAliasedEnumOutput( + props?: NonStreamingProps<'FnTestAliasedEnumOutput'> +): NonStreamingHookResult<'FnTestAliasedEnumOutput'>; + +export function useFnTestAliasedEnumOutput( + props: HookProps<'FnTestAliasedEnumOutput'> = {} +): StreamingHookResult<'FnTestAliasedEnumOutput'> | NonStreamingHookResult<'FnTestAliasedEnumOutput'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnTestAliasedEnumOutput, props); + } else { + return useBamlAction(Actions.FnTestAliasedEnumOutput, props); + } +} +/** + * A specialized hook for the FnTestClassAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestClassAlias + * - **Streaming Partial:** partial_types.TestClassAlias + * - **Streaming Final:** TestClassAlias + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnTestClassAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnTestClassAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnTestClassAlias( + props: StreamingProps<'FnTestClassAlias'> +): StreamingHookResult<'FnTestClassAlias'>; + +export function useFnTestClassAlias( + props?: NonStreamingProps<'FnTestClassAlias'> +): NonStreamingHookResult<'FnTestClassAlias'>; + +export function useFnTestClassAlias( + props: HookProps<'FnTestClassAlias'> = {} +): StreamingHookResult<'FnTestClassAlias'> | NonStreamingHookResult<'FnTestClassAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnTestClassAlias, props); + } else { + return useBamlAction(Actions.FnTestClassAlias, props); + } +} +/** + * A specialized hook for the FnTestNamedArgsSingleEnum BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myArg: NamedArgsSingleEnum + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useFnTestNamedArgsSingleEnum(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useFnTestNamedArgsSingleEnum({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useFnTestNamedArgsSingleEnum( + props: StreamingProps<'FnTestNamedArgsSingleEnum'> +): StreamingHookResult<'FnTestNamedArgsSingleEnum'>; + +export function useFnTestNamedArgsSingleEnum( + props?: NonStreamingProps<'FnTestNamedArgsSingleEnum'> +): NonStreamingHookResult<'FnTestNamedArgsSingleEnum'>; + +export function useFnTestNamedArgsSingleEnum( + props: HookProps<'FnTestNamedArgsSingleEnum'> = {} +): StreamingHookResult<'FnTestNamedArgsSingleEnum'> | NonStreamingHookResult<'FnTestNamedArgsSingleEnum'> { + if (props.stream) { + return useBamlAction(StreamingActions.FnTestNamedArgsSingleEnum, props); + } else { + return useBamlAction(Actions.FnTestNamedArgsSingleEnum, props); + } +} +/** + * A specialized hook for the GetDataType BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - text: string + * + * + * **Return Type:** + * - **Non‑streaming:** RaysData + * - **Streaming Partial:** partial_types.RaysData + * - **Streaming Final:** RaysData + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useGetDataType(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useGetDataType({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useGetDataType( + props: StreamingProps<'GetDataType'> +): StreamingHookResult<'GetDataType'>; + +export function useGetDataType( + props?: NonStreamingProps<'GetDataType'> +): NonStreamingHookResult<'GetDataType'>; + +export function useGetDataType( + props: HookProps<'GetDataType'> = {} +): StreamingHookResult<'GetDataType'> | NonStreamingHookResult<'GetDataType'> { + if (props.stream) { + return useBamlAction(StreamingActions.GetDataType, props); + } else { + return useBamlAction(Actions.GetDataType, props); + } +} +/** + * A specialized hook for the GetOrderInfo BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - email: Email + * + * + * **Return Type:** + * - **Non‑streaming:** OrderInfo + * - **Streaming Partial:** partial_types.OrderInfo + * - **Streaming Final:** OrderInfo + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useGetOrderInfo(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useGetOrderInfo({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useGetOrderInfo( + props: StreamingProps<'GetOrderInfo'> +): StreamingHookResult<'GetOrderInfo'>; + +export function useGetOrderInfo( + props?: NonStreamingProps<'GetOrderInfo'> +): NonStreamingHookResult<'GetOrderInfo'>; + +export function useGetOrderInfo( + props: HookProps<'GetOrderInfo'> = {} +): StreamingHookResult<'GetOrderInfo'> | NonStreamingHookResult<'GetOrderInfo'> { + if (props.stream) { + return useBamlAction(StreamingActions.GetOrderInfo, props); + } else { + return useBamlAction(Actions.GetOrderInfo, props); + } +} +/** + * A specialized hook for the GetQuery BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - query: string + * + * + * **Return Type:** + * - **Non‑streaming:** SearchParams + * - **Streaming Partial:** partial_types.SearchParams + * - **Streaming Final:** SearchParams + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useGetQuery(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useGetQuery({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useGetQuery( + props: StreamingProps<'GetQuery'> +): StreamingHookResult<'GetQuery'>; + +export function useGetQuery( + props?: NonStreamingProps<'GetQuery'> +): NonStreamingHookResult<'GetQuery'>; + +export function useGetQuery( + props: HookProps<'GetQuery'> = {} +): StreamingHookResult<'GetQuery'> | NonStreamingHookResult<'GetQuery'> { + if (props.stream) { + return useBamlAction(StreamingActions.GetQuery, props); + } else { + return useBamlAction(Actions.GetQuery, props); + } +} +/** + * A specialized hook for the InOutEnumMapKey BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - i1: Partial> + * + * - i2: Partial> + * + * + * **Return Type:** + * - **Non‑streaming:** Partial> + * - **Streaming Partial:** (Record ) + * - **Streaming Final:** Partial> + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useInOutEnumMapKey(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useInOutEnumMapKey({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useInOutEnumMapKey( + props: StreamingProps<'InOutEnumMapKey'> +): StreamingHookResult<'InOutEnumMapKey'>; + +export function useInOutEnumMapKey( + props?: NonStreamingProps<'InOutEnumMapKey'> +): NonStreamingHookResult<'InOutEnumMapKey'>; + +export function useInOutEnumMapKey( + props: HookProps<'InOutEnumMapKey'> = {} +): StreamingHookResult<'InOutEnumMapKey'> | NonStreamingHookResult<'InOutEnumMapKey'> { + if (props.stream) { + return useBamlAction(StreamingActions.InOutEnumMapKey, props); + } else { + return useBamlAction(Actions.InOutEnumMapKey, props); + } +} +/** + * A specialized hook for the InOutLiteralStringUnionMapKey BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - i1: Partial> + * + * - i2: Partial> + * + * + * **Return Type:** + * - **Non‑streaming:** Partial> + * - **Streaming Partial:** (Record<"one" | "two" | "three" | "four", (string | null)> ) + * - **Streaming Final:** Partial> + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useInOutLiteralStringUnionMapKey(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useInOutLiteralStringUnionMapKey({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useInOutLiteralStringUnionMapKey( + props: StreamingProps<'InOutLiteralStringUnionMapKey'> +): StreamingHookResult<'InOutLiteralStringUnionMapKey'>; + +export function useInOutLiteralStringUnionMapKey( + props?: NonStreamingProps<'InOutLiteralStringUnionMapKey'> +): NonStreamingHookResult<'InOutLiteralStringUnionMapKey'>; + +export function useInOutLiteralStringUnionMapKey( + props: HookProps<'InOutLiteralStringUnionMapKey'> = {} +): StreamingHookResult<'InOutLiteralStringUnionMapKey'> | NonStreamingHookResult<'InOutLiteralStringUnionMapKey'> { + if (props.stream) { + return useBamlAction(StreamingActions.InOutLiteralStringUnionMapKey, props); + } else { + return useBamlAction(Actions.InOutLiteralStringUnionMapKey, props); + } +} +/** + * A specialized hook for the InOutSingleLiteralStringMapKey BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - m: Partial> + * + * + * **Return Type:** + * - **Non‑streaming:** Partial> + * - **Streaming Partial:** (Record<"key", (string | null)> ) + * - **Streaming Final:** Partial> + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useInOutSingleLiteralStringMapKey(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useInOutSingleLiteralStringMapKey({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useInOutSingleLiteralStringMapKey( + props: StreamingProps<'InOutSingleLiteralStringMapKey'> +): StreamingHookResult<'InOutSingleLiteralStringMapKey'>; + +export function useInOutSingleLiteralStringMapKey( + props?: NonStreamingProps<'InOutSingleLiteralStringMapKey'> +): NonStreamingHookResult<'InOutSingleLiteralStringMapKey'>; + +export function useInOutSingleLiteralStringMapKey( + props: HookProps<'InOutSingleLiteralStringMapKey'> = {} +): StreamingHookResult<'InOutSingleLiteralStringMapKey'> | NonStreamingHookResult<'InOutSingleLiteralStringMapKey'> { + if (props.stream) { + return useBamlAction(StreamingActions.InOutSingleLiteralStringMapKey, props); + } else { + return useBamlAction(Actions.InOutSingleLiteralStringMapKey, props); + } +} +/** + * A specialized hook for the JsonTypeAliasCycle BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: JsonValue + * + * + * **Return Type:** + * - **Non‑streaming:** JsonValue + * - **Streaming Partial:** JsonValue + * - **Streaming Final:** JsonValue + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useJsonTypeAliasCycle(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useJsonTypeAliasCycle({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useJsonTypeAliasCycle( + props: StreamingProps<'JsonTypeAliasCycle'> +): StreamingHookResult<'JsonTypeAliasCycle'>; + +export function useJsonTypeAliasCycle( + props?: NonStreamingProps<'JsonTypeAliasCycle'> +): NonStreamingHookResult<'JsonTypeAliasCycle'>; + +export function useJsonTypeAliasCycle( + props: HookProps<'JsonTypeAliasCycle'> = {} +): StreamingHookResult<'JsonTypeAliasCycle'> | NonStreamingHookResult<'JsonTypeAliasCycle'> { + if (props.stream) { + return useBamlAction(StreamingActions.JsonTypeAliasCycle, props); + } else { + return useBamlAction(Actions.JsonTypeAliasCycle, props); + } +} +/** + * A specialized hook for the LiteralUnionsTest BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** 1 | true | "string output" + * - **Streaming Partial:** (1 | true | "string output") + * - **Streaming Final:** 1 | true | "string output" + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useLiteralUnionsTest(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useLiteralUnionsTest({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useLiteralUnionsTest( + props: StreamingProps<'LiteralUnionsTest'> +): StreamingHookResult<'LiteralUnionsTest'>; + +export function useLiteralUnionsTest( + props?: NonStreamingProps<'LiteralUnionsTest'> +): NonStreamingHookResult<'LiteralUnionsTest'>; + +export function useLiteralUnionsTest( + props: HookProps<'LiteralUnionsTest'> = {} +): StreamingHookResult<'LiteralUnionsTest'> | NonStreamingHookResult<'LiteralUnionsTest'> { + if (props.stream) { + return useBamlAction(StreamingActions.LiteralUnionsTest, props); + } else { + return useBamlAction(Actions.LiteralUnionsTest, props); + } +} +/** + * A specialized hook for the MakeBlockConstraint BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** Checked + * - **Streaming Partial:** Checked + * - **Streaming Final:** Checked + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMakeBlockConstraint(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMakeBlockConstraint({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMakeBlockConstraint( + props: StreamingProps<'MakeBlockConstraint'> +): StreamingHookResult<'MakeBlockConstraint'>; + +export function useMakeBlockConstraint( + props?: NonStreamingProps<'MakeBlockConstraint'> +): NonStreamingHookResult<'MakeBlockConstraint'>; + +export function useMakeBlockConstraint( + props: HookProps<'MakeBlockConstraint'> = {} +): StreamingHookResult<'MakeBlockConstraint'> | NonStreamingHookResult<'MakeBlockConstraint'> { + if (props.stream) { + return useBamlAction(StreamingActions.MakeBlockConstraint, props); + } else { + return useBamlAction(Actions.MakeBlockConstraint, props); + } +} +/** + * A specialized hook for the MakeNestedBlockConstraint BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** NestedBlockConstraint + * - **Streaming Partial:** partial_types.NestedBlockConstraint + * - **Streaming Final:** NestedBlockConstraint + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMakeNestedBlockConstraint(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMakeNestedBlockConstraint({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMakeNestedBlockConstraint( + props: StreamingProps<'MakeNestedBlockConstraint'> +): StreamingHookResult<'MakeNestedBlockConstraint'>; + +export function useMakeNestedBlockConstraint( + props?: NonStreamingProps<'MakeNestedBlockConstraint'> +): NonStreamingHookResult<'MakeNestedBlockConstraint'>; + +export function useMakeNestedBlockConstraint( + props: HookProps<'MakeNestedBlockConstraint'> = {} +): StreamingHookResult<'MakeNestedBlockConstraint'> | NonStreamingHookResult<'MakeNestedBlockConstraint'> { + if (props.stream) { + return useBamlAction(StreamingActions.MakeNestedBlockConstraint, props); + } else { + return useBamlAction(Actions.MakeNestedBlockConstraint, props); + } +} +/** + * A specialized hook for the MakeSemanticContainer BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** SemanticContainer + * - **Streaming Partial:** partial_types.SemanticContainer + * - **Streaming Final:** SemanticContainer + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMakeSemanticContainer(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMakeSemanticContainer({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMakeSemanticContainer( + props: StreamingProps<'MakeSemanticContainer'> +): StreamingHookResult<'MakeSemanticContainer'>; + +export function useMakeSemanticContainer( + props?: NonStreamingProps<'MakeSemanticContainer'> +): NonStreamingHookResult<'MakeSemanticContainer'>; + +export function useMakeSemanticContainer( + props: HookProps<'MakeSemanticContainer'> = {} +): StreamingHookResult<'MakeSemanticContainer'> | NonStreamingHookResult<'MakeSemanticContainer'> { + if (props.stream) { + return useBamlAction(StreamingActions.MakeSemanticContainer, props); + } else { + return useBamlAction(Actions.MakeSemanticContainer, props); + } +} +/** + * A specialized hook for the MapAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - m: Record + * + * + * **Return Type:** + * - **Non‑streaming:** Record + * - **Streaming Partial:** (Record ) + * - **Streaming Final:** Record + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMapAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMapAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMapAlias( + props: StreamingProps<'MapAlias'> +): StreamingHookResult<'MapAlias'>; + +export function useMapAlias( + props?: NonStreamingProps<'MapAlias'> +): NonStreamingHookResult<'MapAlias'>; + +export function useMapAlias( + props: HookProps<'MapAlias'> = {} +): StreamingHookResult<'MapAlias'> | NonStreamingHookResult<'MapAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.MapAlias, props); + } else { + return useBamlAction(Actions.MapAlias, props); + } +} +/** + * A specialized hook for the MergeAliasAttributes BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - money: number + * + * + * **Return Type:** + * - **Non‑streaming:** MergeAttrs + * - **Streaming Partial:** partial_types.MergeAttrs + * - **Streaming Final:** MergeAttrs + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMergeAliasAttributes(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMergeAliasAttributes({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMergeAliasAttributes( + props: StreamingProps<'MergeAliasAttributes'> +): StreamingHookResult<'MergeAliasAttributes'>; + +export function useMergeAliasAttributes( + props?: NonStreamingProps<'MergeAliasAttributes'> +): NonStreamingHookResult<'MergeAliasAttributes'>; + +export function useMergeAliasAttributes( + props: HookProps<'MergeAliasAttributes'> = {} +): StreamingHookResult<'MergeAliasAttributes'> | NonStreamingHookResult<'MergeAliasAttributes'> { + if (props.stream) { + return useBamlAction(StreamingActions.MergeAliasAttributes, props); + } else { + return useBamlAction(Actions.MergeAliasAttributes, props); + } +} +/** + * A specialized hook for the MyFunc BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** DynamicOutput + * - **Streaming Partial:** partial_types.DynamicOutput + * - **Streaming Final:** DynamicOutput + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useMyFunc(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useMyFunc({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useMyFunc( + props: StreamingProps<'MyFunc'> +): StreamingHookResult<'MyFunc'>; + +export function useMyFunc( + props?: NonStreamingProps<'MyFunc'> +): NonStreamingHookResult<'MyFunc'>; + +export function useMyFunc( + props: HookProps<'MyFunc'> = {} +): StreamingHookResult<'MyFunc'> | NonStreamingHookResult<'MyFunc'> { + if (props.stream) { + return useBamlAction(StreamingActions.MyFunc, props); + } else { + return useBamlAction(Actions.MyFunc, props); + } +} +/** + * A specialized hook for the NestedAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - c: number | string | boolean | number | string[] | Record + * + * + * **Return Type:** + * - **Non‑streaming:** number | string | boolean | number | string[] | Record + * - **Streaming Partial:** (((number | null) | (string | null) | (boolean | null) | (number | null) | null) | (string | null)[] | (Record | null)) + * - **Streaming Final:** number | string | boolean | number | string[] | Record + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useNestedAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useNestedAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useNestedAlias( + props: StreamingProps<'NestedAlias'> +): StreamingHookResult<'NestedAlias'>; + +export function useNestedAlias( + props?: NonStreamingProps<'NestedAlias'> +): NonStreamingHookResult<'NestedAlias'>; + +export function useNestedAlias( + props: HookProps<'NestedAlias'> = {} +): StreamingHookResult<'NestedAlias'> | NonStreamingHookResult<'NestedAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.NestedAlias, props); + } else { + return useBamlAction(Actions.NestedAlias, props); + } +} +/** + * A specialized hook for the NullLiteralClassHello BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - s: string + * + * + * **Return Type:** + * - **Non‑streaming:** ClassForNullLiteral + * - **Streaming Partial:** partial_types.ClassForNullLiteral + * - **Streaming Final:** ClassForNullLiteral + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useNullLiteralClassHello(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useNullLiteralClassHello({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useNullLiteralClassHello( + props: StreamingProps<'NullLiteralClassHello'> +): StreamingHookResult<'NullLiteralClassHello'>; + +export function useNullLiteralClassHello( + props?: NonStreamingProps<'NullLiteralClassHello'> +): NonStreamingHookResult<'NullLiteralClassHello'>; + +export function useNullLiteralClassHello( + props: HookProps<'NullLiteralClassHello'> = {} +): StreamingHookResult<'NullLiteralClassHello'> | NonStreamingHookResult<'NullLiteralClassHello'> { + if (props.stream) { + return useBamlAction(StreamingActions.NullLiteralClassHello, props); + } else { + return useBamlAction(Actions.NullLiteralClassHello, props); + } +} +/** + * A specialized hook for the OptionalTest_Function BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** (OptionalTest_ReturnType | null)[] + * - **Streaming Partial:** ((partial_types.OptionalTest_ReturnType | null) | null)[] + * - **Streaming Final:** (OptionalTest_ReturnType | null)[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useOptionalTest_Function(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useOptionalTest_Function({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useOptionalTest_Function( + props: StreamingProps<'OptionalTest_Function'> +): StreamingHookResult<'OptionalTest_Function'>; + +export function useOptionalTest_Function( + props?: NonStreamingProps<'OptionalTest_Function'> +): NonStreamingHookResult<'OptionalTest_Function'>; + +export function useOptionalTest_Function( + props: HookProps<'OptionalTest_Function'> = {} +): StreamingHookResult<'OptionalTest_Function'> | NonStreamingHookResult<'OptionalTest_Function'> { + if (props.stream) { + return useBamlAction(StreamingActions.OptionalTest_Function, props); + } else { + return useBamlAction(Actions.OptionalTest_Function, props); + } +} +/** + * A specialized hook for the PredictAge BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - name: string + * + * + * **Return Type:** + * - **Non‑streaming:** FooAny + * - **Streaming Partial:** partial_types.FooAny + * - **Streaming Final:** FooAny + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePredictAge(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePredictAge({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePredictAge( + props: StreamingProps<'PredictAge'> +): StreamingHookResult<'PredictAge'>; + +export function usePredictAge( + props?: NonStreamingProps<'PredictAge'> +): NonStreamingHookResult<'PredictAge'>; + +export function usePredictAge( + props: HookProps<'PredictAge'> = {} +): StreamingHookResult<'PredictAge'> | NonStreamingHookResult<'PredictAge'> { + if (props.stream) { + return useBamlAction(StreamingActions.PredictAge, props); + } else { + return useBamlAction(Actions.PredictAge, props); + } +} +/** + * A specialized hook for the PredictAgeBare BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - inp: string + * + * + * **Return Type:** + * - **Non‑streaming:** Checked + * - **Streaming Partial:** Checked + * - **Streaming Final:** Checked + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePredictAgeBare(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePredictAgeBare({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePredictAgeBare( + props: StreamingProps<'PredictAgeBare'> +): StreamingHookResult<'PredictAgeBare'>; + +export function usePredictAgeBare( + props?: NonStreamingProps<'PredictAgeBare'> +): NonStreamingHookResult<'PredictAgeBare'>; + +export function usePredictAgeBare( + props: HookProps<'PredictAgeBare'> = {} +): StreamingHookResult<'PredictAgeBare'> | NonStreamingHookResult<'PredictAgeBare'> { + if (props.stream) { + return useBamlAction(StreamingActions.PredictAgeBare, props); + } else { + return useBamlAction(Actions.PredictAgeBare, props); + } +} +/** + * A specialized hook for the PrimitiveAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - p: number | string | boolean | number + * + * + * **Return Type:** + * - **Non‑streaming:** number | string | boolean | number + * - **Streaming Partial:** ((number | null) | (string | null) | (boolean | null) | (number | null)) + * - **Streaming Final:** number | string | boolean | number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePrimitiveAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePrimitiveAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePrimitiveAlias( + props: StreamingProps<'PrimitiveAlias'> +): StreamingHookResult<'PrimitiveAlias'>; + +export function usePrimitiveAlias( + props?: NonStreamingProps<'PrimitiveAlias'> +): NonStreamingHookResult<'PrimitiveAlias'>; + +export function usePrimitiveAlias( + props: HookProps<'PrimitiveAlias'> = {} +): StreamingHookResult<'PrimitiveAlias'> | NonStreamingHookResult<'PrimitiveAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.PrimitiveAlias, props); + } else { + return useBamlAction(Actions.PrimitiveAlias, props); + } +} +/** + * A specialized hook for the PromptTestClaude BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestClaude(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestClaude({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestClaude( + props: StreamingProps<'PromptTestClaude'> +): StreamingHookResult<'PromptTestClaude'>; + +export function usePromptTestClaude( + props?: NonStreamingProps<'PromptTestClaude'> +): NonStreamingHookResult<'PromptTestClaude'>; + +export function usePromptTestClaude( + props: HookProps<'PromptTestClaude'> = {} +): StreamingHookResult<'PromptTestClaude'> | NonStreamingHookResult<'PromptTestClaude'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestClaude, props); + } else { + return useBamlAction(Actions.PromptTestClaude, props); + } +} +/** + * A specialized hook for the PromptTestClaudeChat BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestClaudeChat(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestClaudeChat({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestClaudeChat( + props: StreamingProps<'PromptTestClaudeChat'> +): StreamingHookResult<'PromptTestClaudeChat'>; + +export function usePromptTestClaudeChat( + props?: NonStreamingProps<'PromptTestClaudeChat'> +): NonStreamingHookResult<'PromptTestClaudeChat'>; + +export function usePromptTestClaudeChat( + props: HookProps<'PromptTestClaudeChat'> = {} +): StreamingHookResult<'PromptTestClaudeChat'> | NonStreamingHookResult<'PromptTestClaudeChat'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestClaudeChat, props); + } else { + return useBamlAction(Actions.PromptTestClaudeChat, props); + } +} +/** + * A specialized hook for the PromptTestClaudeChatNoSystem BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestClaudeChatNoSystem(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestClaudeChatNoSystem({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestClaudeChatNoSystem( + props: StreamingProps<'PromptTestClaudeChatNoSystem'> +): StreamingHookResult<'PromptTestClaudeChatNoSystem'>; + +export function usePromptTestClaudeChatNoSystem( + props?: NonStreamingProps<'PromptTestClaudeChatNoSystem'> +): NonStreamingHookResult<'PromptTestClaudeChatNoSystem'>; + +export function usePromptTestClaudeChatNoSystem( + props: HookProps<'PromptTestClaudeChatNoSystem'> = {} +): StreamingHookResult<'PromptTestClaudeChatNoSystem'> | NonStreamingHookResult<'PromptTestClaudeChatNoSystem'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestClaudeChatNoSystem, props); + } else { + return useBamlAction(Actions.PromptTestClaudeChatNoSystem, props); + } +} +/** + * A specialized hook for the PromptTestOpenAI BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestOpenAI(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestOpenAI({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestOpenAI( + props: StreamingProps<'PromptTestOpenAI'> +): StreamingHookResult<'PromptTestOpenAI'>; + +export function usePromptTestOpenAI( + props?: NonStreamingProps<'PromptTestOpenAI'> +): NonStreamingHookResult<'PromptTestOpenAI'>; + +export function usePromptTestOpenAI( + props: HookProps<'PromptTestOpenAI'> = {} +): StreamingHookResult<'PromptTestOpenAI'> | NonStreamingHookResult<'PromptTestOpenAI'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestOpenAI, props); + } else { + return useBamlAction(Actions.PromptTestOpenAI, props); + } +} +/** + * A specialized hook for the PromptTestOpenAIChat BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestOpenAIChat(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestOpenAIChat({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestOpenAIChat( + props: StreamingProps<'PromptTestOpenAIChat'> +): StreamingHookResult<'PromptTestOpenAIChat'>; + +export function usePromptTestOpenAIChat( + props?: NonStreamingProps<'PromptTestOpenAIChat'> +): NonStreamingHookResult<'PromptTestOpenAIChat'>; + +export function usePromptTestOpenAIChat( + props: HookProps<'PromptTestOpenAIChat'> = {} +): StreamingHookResult<'PromptTestOpenAIChat'> | NonStreamingHookResult<'PromptTestOpenAIChat'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestOpenAIChat, props); + } else { + return useBamlAction(Actions.PromptTestOpenAIChat, props); + } +} +/** + * A specialized hook for the PromptTestOpenAIChatNoSystem BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestOpenAIChatNoSystem(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestOpenAIChatNoSystem({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestOpenAIChatNoSystem( + props: StreamingProps<'PromptTestOpenAIChatNoSystem'> +): StreamingHookResult<'PromptTestOpenAIChatNoSystem'>; + +export function usePromptTestOpenAIChatNoSystem( + props?: NonStreamingProps<'PromptTestOpenAIChatNoSystem'> +): NonStreamingHookResult<'PromptTestOpenAIChatNoSystem'>; + +export function usePromptTestOpenAIChatNoSystem( + props: HookProps<'PromptTestOpenAIChatNoSystem'> = {} +): StreamingHookResult<'PromptTestOpenAIChatNoSystem'> | NonStreamingHookResult<'PromptTestOpenAIChatNoSystem'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestOpenAIChatNoSystem, props); + } else { + return useBamlAction(Actions.PromptTestOpenAIChatNoSystem, props); + } +} +/** + * A specialized hook for the PromptTestStreaming BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = usePromptTestStreaming(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = usePromptTestStreaming({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function usePromptTestStreaming( + props: StreamingProps<'PromptTestStreaming'> +): StreamingHookResult<'PromptTestStreaming'>; + +export function usePromptTestStreaming( + props?: NonStreamingProps<'PromptTestStreaming'> +): NonStreamingHookResult<'PromptTestStreaming'>; + +export function usePromptTestStreaming( + props: HookProps<'PromptTestStreaming'> = {} +): StreamingHookResult<'PromptTestStreaming'> | NonStreamingHookResult<'PromptTestStreaming'> { + if (props.stream) { + return useBamlAction(StreamingActions.PromptTestStreaming, props); + } else { + return useBamlAction(Actions.PromptTestStreaming, props); + } +} +/** + * A specialized hook for the RecursiveAliasCycle BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: RecAliasOne + * + * + * **Return Type:** + * - **Non‑streaming:** RecAliasOne + * - **Streaming Partial:** RecAliasOne + * - **Streaming Final:** RecAliasOne + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useRecursiveAliasCycle(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useRecursiveAliasCycle({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useRecursiveAliasCycle( + props: StreamingProps<'RecursiveAliasCycle'> +): StreamingHookResult<'RecursiveAliasCycle'>; + +export function useRecursiveAliasCycle( + props?: NonStreamingProps<'RecursiveAliasCycle'> +): NonStreamingHookResult<'RecursiveAliasCycle'>; + +export function useRecursiveAliasCycle( + props: HookProps<'RecursiveAliasCycle'> = {} +): StreamingHookResult<'RecursiveAliasCycle'> | NonStreamingHookResult<'RecursiveAliasCycle'> { + if (props.stream) { + return useBamlAction(StreamingActions.RecursiveAliasCycle, props); + } else { + return useBamlAction(Actions.RecursiveAliasCycle, props); + } +} +/** + * A specialized hook for the RecursiveClassWithAliasIndirection BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - cls: NodeWithAliasIndirection + * + * + * **Return Type:** + * - **Non‑streaming:** NodeWithAliasIndirection + * - **Streaming Partial:** partial_types.NodeWithAliasIndirection + * - **Streaming Final:** NodeWithAliasIndirection + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useRecursiveClassWithAliasIndirection(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useRecursiveClassWithAliasIndirection({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useRecursiveClassWithAliasIndirection( + props: StreamingProps<'RecursiveClassWithAliasIndirection'> +): StreamingHookResult<'RecursiveClassWithAliasIndirection'>; + +export function useRecursiveClassWithAliasIndirection( + props?: NonStreamingProps<'RecursiveClassWithAliasIndirection'> +): NonStreamingHookResult<'RecursiveClassWithAliasIndirection'>; + +export function useRecursiveClassWithAliasIndirection( + props: HookProps<'RecursiveClassWithAliasIndirection'> = {} +): StreamingHookResult<'RecursiveClassWithAliasIndirection'> | NonStreamingHookResult<'RecursiveClassWithAliasIndirection'> { + if (props.stream) { + return useBamlAction(StreamingActions.RecursiveClassWithAliasIndirection, props); + } else { + return useBamlAction(Actions.RecursiveClassWithAliasIndirection, props); + } +} +/** + * A specialized hook for the ReturnAliasWithMergedAttributes BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - money: Checked + * + * + * **Return Type:** + * - **Non‑streaming:** Checked + * - **Streaming Partial:** Checked + * - **Streaming Final:** Checked + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useReturnAliasWithMergedAttributes(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useReturnAliasWithMergedAttributes({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useReturnAliasWithMergedAttributes( + props: StreamingProps<'ReturnAliasWithMergedAttributes'> +): StreamingHookResult<'ReturnAliasWithMergedAttributes'>; + +export function useReturnAliasWithMergedAttributes( + props?: NonStreamingProps<'ReturnAliasWithMergedAttributes'> +): NonStreamingHookResult<'ReturnAliasWithMergedAttributes'>; + +export function useReturnAliasWithMergedAttributes( + props: HookProps<'ReturnAliasWithMergedAttributes'> = {} +): StreamingHookResult<'ReturnAliasWithMergedAttributes'> | NonStreamingHookResult<'ReturnAliasWithMergedAttributes'> { + if (props.stream) { + return useBamlAction(StreamingActions.ReturnAliasWithMergedAttributes, props); + } else { + return useBamlAction(Actions.ReturnAliasWithMergedAttributes, props); + } +} +/** + * A specialized hook for the ReturnFailingAssert BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - inp: number + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useReturnFailingAssert(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useReturnFailingAssert({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useReturnFailingAssert( + props: StreamingProps<'ReturnFailingAssert'> +): StreamingHookResult<'ReturnFailingAssert'>; + +export function useReturnFailingAssert( + props?: NonStreamingProps<'ReturnFailingAssert'> +): NonStreamingHookResult<'ReturnFailingAssert'>; + +export function useReturnFailingAssert( + props: HookProps<'ReturnFailingAssert'> = {} +): StreamingHookResult<'ReturnFailingAssert'> | NonStreamingHookResult<'ReturnFailingAssert'> { + if (props.stream) { + return useBamlAction(StreamingActions.ReturnFailingAssert, props); + } else { + return useBamlAction(Actions.ReturnFailingAssert, props); + } +} +/** + * A specialized hook for the ReturnMalformedConstraints BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - a: number + * + * + * **Return Type:** + * - **Non‑streaming:** MalformedConstraints + * - **Streaming Partial:** partial_types.MalformedConstraints + * - **Streaming Final:** MalformedConstraints + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useReturnMalformedConstraints(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useReturnMalformedConstraints({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useReturnMalformedConstraints( + props: StreamingProps<'ReturnMalformedConstraints'> +): StreamingHookResult<'ReturnMalformedConstraints'>; + +export function useReturnMalformedConstraints( + props?: NonStreamingProps<'ReturnMalformedConstraints'> +): NonStreamingHookResult<'ReturnMalformedConstraints'>; + +export function useReturnMalformedConstraints( + props: HookProps<'ReturnMalformedConstraints'> = {} +): StreamingHookResult<'ReturnMalformedConstraints'> | NonStreamingHookResult<'ReturnMalformedConstraints'> { + if (props.stream) { + return useBamlAction(StreamingActions.ReturnMalformedConstraints, props); + } else { + return useBamlAction(Actions.ReturnMalformedConstraints, props); + } +} +/** + * A specialized hook for the SchemaDescriptions BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** Schema + * - **Streaming Partial:** partial_types.Schema + * - **Streaming Final:** Schema + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useSchemaDescriptions(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useSchemaDescriptions({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useSchemaDescriptions( + props: StreamingProps<'SchemaDescriptions'> +): StreamingHookResult<'SchemaDescriptions'>; + +export function useSchemaDescriptions( + props?: NonStreamingProps<'SchemaDescriptions'> +): NonStreamingHookResult<'SchemaDescriptions'>; + +export function useSchemaDescriptions( + props: HookProps<'SchemaDescriptions'> = {} +): StreamingHookResult<'SchemaDescriptions'> | NonStreamingHookResult<'SchemaDescriptions'> { + if (props.stream) { + return useBamlAction(StreamingActions.SchemaDescriptions, props); + } else { + return useBamlAction(Actions.SchemaDescriptions, props); + } +} +/** + * A specialized hook for the SimpleRecursiveListAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: RecursiveListAlias + * + * + * **Return Type:** + * - **Non‑streaming:** RecursiveListAlias + * - **Streaming Partial:** RecursiveListAlias + * - **Streaming Final:** RecursiveListAlias + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useSimpleRecursiveListAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useSimpleRecursiveListAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useSimpleRecursiveListAlias( + props: StreamingProps<'SimpleRecursiveListAlias'> +): StreamingHookResult<'SimpleRecursiveListAlias'>; + +export function useSimpleRecursiveListAlias( + props?: NonStreamingProps<'SimpleRecursiveListAlias'> +): NonStreamingHookResult<'SimpleRecursiveListAlias'>; + +export function useSimpleRecursiveListAlias( + props: HookProps<'SimpleRecursiveListAlias'> = {} +): StreamingHookResult<'SimpleRecursiveListAlias'> | NonStreamingHookResult<'SimpleRecursiveListAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.SimpleRecursiveListAlias, props); + } else { + return useBamlAction(Actions.SimpleRecursiveListAlias, props); + } +} +/** + * A specialized hook for the SimpleRecursiveMapAlias BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: RecursiveMapAlias + * + * + * **Return Type:** + * - **Non‑streaming:** RecursiveMapAlias + * - **Streaming Partial:** RecursiveMapAlias + * - **Streaming Final:** RecursiveMapAlias + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useSimpleRecursiveMapAlias(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useSimpleRecursiveMapAlias({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useSimpleRecursiveMapAlias( + props: StreamingProps<'SimpleRecursiveMapAlias'> +): StreamingHookResult<'SimpleRecursiveMapAlias'>; + +export function useSimpleRecursiveMapAlias( + props?: NonStreamingProps<'SimpleRecursiveMapAlias'> +): NonStreamingHookResult<'SimpleRecursiveMapAlias'>; + +export function useSimpleRecursiveMapAlias( + props: HookProps<'SimpleRecursiveMapAlias'> = {} +): StreamingHookResult<'SimpleRecursiveMapAlias'> | NonStreamingHookResult<'SimpleRecursiveMapAlias'> { + if (props.stream) { + return useBamlAction(StreamingActions.SimpleRecursiveMapAlias, props); + } else { + return useBamlAction(Actions.SimpleRecursiveMapAlias, props); + } +} +/** + * A specialized hook for the StreamBigNumbers BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - digits: number + * + * + * **Return Type:** + * - **Non‑streaming:** BigNumbers + * - **Streaming Partial:** partial_types.BigNumbers + * - **Streaming Final:** BigNumbers + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useStreamBigNumbers(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useStreamBigNumbers({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useStreamBigNumbers( + props: StreamingProps<'StreamBigNumbers'> +): StreamingHookResult<'StreamBigNumbers'>; + +export function useStreamBigNumbers( + props?: NonStreamingProps<'StreamBigNumbers'> +): NonStreamingHookResult<'StreamBigNumbers'>; + +export function useStreamBigNumbers( + props: HookProps<'StreamBigNumbers'> = {} +): StreamingHookResult<'StreamBigNumbers'> | NonStreamingHookResult<'StreamBigNumbers'> { + if (props.stream) { + return useBamlAction(StreamingActions.StreamBigNumbers, props); + } else { + return useBamlAction(Actions.StreamBigNumbers, props); + } +} +/** + * A specialized hook for the StreamFailingAssertion BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - theme: string + * + * - length: number + * + * + * **Return Type:** + * - **Non‑streaming:** TwoStoriesOneTitle + * - **Streaming Partial:** partial_types.TwoStoriesOneTitle + * - **Streaming Final:** TwoStoriesOneTitle + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useStreamFailingAssertion(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useStreamFailingAssertion({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useStreamFailingAssertion( + props: StreamingProps<'StreamFailingAssertion'> +): StreamingHookResult<'StreamFailingAssertion'>; + +export function useStreamFailingAssertion( + props?: NonStreamingProps<'StreamFailingAssertion'> +): NonStreamingHookResult<'StreamFailingAssertion'>; + +export function useStreamFailingAssertion( + props: HookProps<'StreamFailingAssertion'> = {} +): StreamingHookResult<'StreamFailingAssertion'> | NonStreamingHookResult<'StreamFailingAssertion'> { + if (props.stream) { + return useBamlAction(StreamingActions.StreamFailingAssertion, props); + } else { + return useBamlAction(Actions.StreamFailingAssertion, props); + } +} +/** + * A specialized hook for the StreamOneBigNumber BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - digits: number + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useStreamOneBigNumber(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useStreamOneBigNumber({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useStreamOneBigNumber( + props: StreamingProps<'StreamOneBigNumber'> +): StreamingHookResult<'StreamOneBigNumber'>; + +export function useStreamOneBigNumber( + props?: NonStreamingProps<'StreamOneBigNumber'> +): NonStreamingHookResult<'StreamOneBigNumber'>; + +export function useStreamOneBigNumber( + props: HookProps<'StreamOneBigNumber'> = {} +): StreamingHookResult<'StreamOneBigNumber'> | NonStreamingHookResult<'StreamOneBigNumber'> { + if (props.stream) { + return useBamlAction(StreamingActions.StreamOneBigNumber, props); + } else { + return useBamlAction(Actions.StreamOneBigNumber, props); + } +} +/** + * A specialized hook for the StreamUnionIntegers BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - digits: number + * + * + * **Return Type:** + * - **Non‑streaming:** (number | string)[] + * - **Streaming Partial:** ((number | null) | (string | null) | null)[] + * - **Streaming Final:** (number | string)[] + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useStreamUnionIntegers(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useStreamUnionIntegers({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useStreamUnionIntegers( + props: StreamingProps<'StreamUnionIntegers'> +): StreamingHookResult<'StreamUnionIntegers'>; + +export function useStreamUnionIntegers( + props?: NonStreamingProps<'StreamUnionIntegers'> +): NonStreamingHookResult<'StreamUnionIntegers'>; + +export function useStreamUnionIntegers( + props: HookProps<'StreamUnionIntegers'> = {} +): StreamingHookResult<'StreamUnionIntegers'> | NonStreamingHookResult<'StreamUnionIntegers'> { + if (props.stream) { + return useBamlAction(StreamingActions.StreamUnionIntegers, props); + } else { + return useBamlAction(Actions.StreamUnionIntegers, props); + } +} +/** + * A specialized hook for the StreamingCompoundNumbers BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - digits: number + * + * - yapping: boolean + * + * + * **Return Type:** + * - **Non‑streaming:** CompoundBigNumbers + * - **Streaming Partial:** partial_types.CompoundBigNumbers + * - **Streaming Final:** CompoundBigNumbers + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useStreamingCompoundNumbers(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useStreamingCompoundNumbers({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useStreamingCompoundNumbers( + props: StreamingProps<'StreamingCompoundNumbers'> +): StreamingHookResult<'StreamingCompoundNumbers'>; + +export function useStreamingCompoundNumbers( + props?: NonStreamingProps<'StreamingCompoundNumbers'> +): NonStreamingHookResult<'StreamingCompoundNumbers'>; + +export function useStreamingCompoundNumbers( + props: HookProps<'StreamingCompoundNumbers'> = {} +): StreamingHookResult<'StreamingCompoundNumbers'> | NonStreamingHookResult<'StreamingCompoundNumbers'> { + if (props.stream) { + return useBamlAction(StreamingActions.StreamingCompoundNumbers, props); + } else { + return useBamlAction(Actions.StreamingCompoundNumbers, props); + } +} +/** + * A specialized hook for the TakeRecAliasDep BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: RecursiveAliasDependency + * + * + * **Return Type:** + * - **Non‑streaming:** RecursiveAliasDependency + * - **Streaming Partial:** partial_types.RecursiveAliasDependency + * - **Streaming Final:** RecursiveAliasDependency + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTakeRecAliasDep(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTakeRecAliasDep({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTakeRecAliasDep( + props: StreamingProps<'TakeRecAliasDep'> +): StreamingHookResult<'TakeRecAliasDep'>; + +export function useTakeRecAliasDep( + props?: NonStreamingProps<'TakeRecAliasDep'> +): NonStreamingHookResult<'TakeRecAliasDep'>; + +export function useTakeRecAliasDep( + props: HookProps<'TakeRecAliasDep'> = {} +): StreamingHookResult<'TakeRecAliasDep'> | NonStreamingHookResult<'TakeRecAliasDep'> { + if (props.stream) { + return useBamlAction(StreamingActions.TakeRecAliasDep, props); + } else { + return useBamlAction(Actions.TakeRecAliasDep, props); + } +} +/** + * A specialized hook for the TestAnthropic BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAnthropic(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAnthropic({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAnthropic( + props: StreamingProps<'TestAnthropic'> +): StreamingHookResult<'TestAnthropic'>; + +export function useTestAnthropic( + props?: NonStreamingProps<'TestAnthropic'> +): NonStreamingHookResult<'TestAnthropic'>; + +export function useTestAnthropic( + props: HookProps<'TestAnthropic'> = {} +): StreamingHookResult<'TestAnthropic'> | NonStreamingHookResult<'TestAnthropic'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAnthropic, props); + } else { + return useBamlAction(Actions.TestAnthropic, props); + } +} +/** + * A specialized hook for the TestAnthropicShorthand BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAnthropicShorthand(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAnthropicShorthand({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAnthropicShorthand( + props: StreamingProps<'TestAnthropicShorthand'> +): StreamingHookResult<'TestAnthropicShorthand'>; + +export function useTestAnthropicShorthand( + props?: NonStreamingProps<'TestAnthropicShorthand'> +): NonStreamingHookResult<'TestAnthropicShorthand'>; + +export function useTestAnthropicShorthand( + props: HookProps<'TestAnthropicShorthand'> = {} +): StreamingHookResult<'TestAnthropicShorthand'> | NonStreamingHookResult<'TestAnthropicShorthand'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAnthropicShorthand, props); + } else { + return useBamlAction(Actions.TestAnthropicShorthand, props); + } +} +/** + * A specialized hook for the TestAws BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAws(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAws({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAws( + props: StreamingProps<'TestAws'> +): StreamingHookResult<'TestAws'>; + +export function useTestAws( + props?: NonStreamingProps<'TestAws'> +): NonStreamingHookResult<'TestAws'>; + +export function useTestAws( + props: HookProps<'TestAws'> = {} +): StreamingHookResult<'TestAws'> | NonStreamingHookResult<'TestAws'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAws, props); + } else { + return useBamlAction(Actions.TestAws, props); + } +} +/** + * A specialized hook for the TestAwsInvalidAccessKey BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAwsInvalidAccessKey(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAwsInvalidAccessKey({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAwsInvalidAccessKey( + props: StreamingProps<'TestAwsInvalidAccessKey'> +): StreamingHookResult<'TestAwsInvalidAccessKey'>; + +export function useTestAwsInvalidAccessKey( + props?: NonStreamingProps<'TestAwsInvalidAccessKey'> +): NonStreamingHookResult<'TestAwsInvalidAccessKey'>; + +export function useTestAwsInvalidAccessKey( + props: HookProps<'TestAwsInvalidAccessKey'> = {} +): StreamingHookResult<'TestAwsInvalidAccessKey'> | NonStreamingHookResult<'TestAwsInvalidAccessKey'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAwsInvalidAccessKey, props); + } else { + return useBamlAction(Actions.TestAwsInvalidAccessKey, props); + } +} +/** + * A specialized hook for the TestAwsInvalidProfile BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAwsInvalidProfile(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAwsInvalidProfile({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAwsInvalidProfile( + props: StreamingProps<'TestAwsInvalidProfile'> +): StreamingHookResult<'TestAwsInvalidProfile'>; + +export function useTestAwsInvalidProfile( + props?: NonStreamingProps<'TestAwsInvalidProfile'> +): NonStreamingHookResult<'TestAwsInvalidProfile'>; + +export function useTestAwsInvalidProfile( + props: HookProps<'TestAwsInvalidProfile'> = {} +): StreamingHookResult<'TestAwsInvalidProfile'> | NonStreamingHookResult<'TestAwsInvalidProfile'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAwsInvalidProfile, props); + } else { + return useBamlAction(Actions.TestAwsInvalidProfile, props); + } +} +/** + * A specialized hook for the TestAwsInvalidRegion BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAwsInvalidRegion(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAwsInvalidRegion({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAwsInvalidRegion( + props: StreamingProps<'TestAwsInvalidRegion'> +): StreamingHookResult<'TestAwsInvalidRegion'>; + +export function useTestAwsInvalidRegion( + props?: NonStreamingProps<'TestAwsInvalidRegion'> +): NonStreamingHookResult<'TestAwsInvalidRegion'>; + +export function useTestAwsInvalidRegion( + props: HookProps<'TestAwsInvalidRegion'> = {} +): StreamingHookResult<'TestAwsInvalidRegion'> | NonStreamingHookResult<'TestAwsInvalidRegion'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAwsInvalidRegion, props); + } else { + return useBamlAction(Actions.TestAwsInvalidRegion, props); + } +} +/** + * A specialized hook for the TestAwsInvalidSessionToken BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAwsInvalidSessionToken(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAwsInvalidSessionToken({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAwsInvalidSessionToken( + props: StreamingProps<'TestAwsInvalidSessionToken'> +): StreamingHookResult<'TestAwsInvalidSessionToken'>; + +export function useTestAwsInvalidSessionToken( + props?: NonStreamingProps<'TestAwsInvalidSessionToken'> +): NonStreamingHookResult<'TestAwsInvalidSessionToken'>; + +export function useTestAwsInvalidSessionToken( + props: HookProps<'TestAwsInvalidSessionToken'> = {} +): StreamingHookResult<'TestAwsInvalidSessionToken'> | NonStreamingHookResult<'TestAwsInvalidSessionToken'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAwsInvalidSessionToken, props); + } else { + return useBamlAction(Actions.TestAwsInvalidSessionToken, props); + } +} +/** + * A specialized hook for the TestAzure BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzure(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzure({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzure( + props: StreamingProps<'TestAzure'> +): StreamingHookResult<'TestAzure'>; + +export function useTestAzure( + props?: NonStreamingProps<'TestAzure'> +): NonStreamingHookResult<'TestAzure'>; + +export function useTestAzure( + props: HookProps<'TestAzure'> = {} +): StreamingHookResult<'TestAzure'> | NonStreamingHookResult<'TestAzure'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzure, props); + } else { + return useBamlAction(Actions.TestAzure, props); + } +} +/** + * A specialized hook for the TestAzureFailure BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzureFailure(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzureFailure({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzureFailure( + props: StreamingProps<'TestAzureFailure'> +): StreamingHookResult<'TestAzureFailure'>; + +export function useTestAzureFailure( + props?: NonStreamingProps<'TestAzureFailure'> +): NonStreamingHookResult<'TestAzureFailure'>; + +export function useTestAzureFailure( + props: HookProps<'TestAzureFailure'> = {} +): StreamingHookResult<'TestAzureFailure'> | NonStreamingHookResult<'TestAzureFailure'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzureFailure, props); + } else { + return useBamlAction(Actions.TestAzureFailure, props); + } +} +/** + * A specialized hook for the TestAzureO1NoMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzureO1NoMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzureO1NoMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzureO1NoMaxTokens( + props: StreamingProps<'TestAzureO1NoMaxTokens'> +): StreamingHookResult<'TestAzureO1NoMaxTokens'>; + +export function useTestAzureO1NoMaxTokens( + props?: NonStreamingProps<'TestAzureO1NoMaxTokens'> +): NonStreamingHookResult<'TestAzureO1NoMaxTokens'>; + +export function useTestAzureO1NoMaxTokens( + props: HookProps<'TestAzureO1NoMaxTokens'> = {} +): StreamingHookResult<'TestAzureO1NoMaxTokens'> | NonStreamingHookResult<'TestAzureO1NoMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzureO1NoMaxTokens, props); + } else { + return useBamlAction(Actions.TestAzureO1NoMaxTokens, props); + } +} +/** + * A specialized hook for the TestAzureO1WithMaxCompletionTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzureO1WithMaxCompletionTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzureO1WithMaxCompletionTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzureO1WithMaxCompletionTokens( + props: StreamingProps<'TestAzureO1WithMaxCompletionTokens'> +): StreamingHookResult<'TestAzureO1WithMaxCompletionTokens'>; + +export function useTestAzureO1WithMaxCompletionTokens( + props?: NonStreamingProps<'TestAzureO1WithMaxCompletionTokens'> +): NonStreamingHookResult<'TestAzureO1WithMaxCompletionTokens'>; + +export function useTestAzureO1WithMaxCompletionTokens( + props: HookProps<'TestAzureO1WithMaxCompletionTokens'> = {} +): StreamingHookResult<'TestAzureO1WithMaxCompletionTokens'> | NonStreamingHookResult<'TestAzureO1WithMaxCompletionTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzureO1WithMaxCompletionTokens, props); + } else { + return useBamlAction(Actions.TestAzureO1WithMaxCompletionTokens, props); + } +} +/** + * A specialized hook for the TestAzureO1WithMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzureO1WithMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzureO1WithMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzureO1WithMaxTokens( + props: StreamingProps<'TestAzureO1WithMaxTokens'> +): StreamingHookResult<'TestAzureO1WithMaxTokens'>; + +export function useTestAzureO1WithMaxTokens( + props?: NonStreamingProps<'TestAzureO1WithMaxTokens'> +): NonStreamingHookResult<'TestAzureO1WithMaxTokens'>; + +export function useTestAzureO1WithMaxTokens( + props: HookProps<'TestAzureO1WithMaxTokens'> = {} +): StreamingHookResult<'TestAzureO1WithMaxTokens'> | NonStreamingHookResult<'TestAzureO1WithMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzureO1WithMaxTokens, props); + } else { + return useBamlAction(Actions.TestAzureO1WithMaxTokens, props); + } +} +/** + * A specialized hook for the TestAzureWithMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestAzureWithMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestAzureWithMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestAzureWithMaxTokens( + props: StreamingProps<'TestAzureWithMaxTokens'> +): StreamingHookResult<'TestAzureWithMaxTokens'>; + +export function useTestAzureWithMaxTokens( + props?: NonStreamingProps<'TestAzureWithMaxTokens'> +): NonStreamingHookResult<'TestAzureWithMaxTokens'>; + +export function useTestAzureWithMaxTokens( + props: HookProps<'TestAzureWithMaxTokens'> = {} +): StreamingHookResult<'TestAzureWithMaxTokens'> | NonStreamingHookResult<'TestAzureWithMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestAzureWithMaxTokens, props); + } else { + return useBamlAction(Actions.TestAzureWithMaxTokens, props); + } +} +/** + * A specialized hook for the TestCaching BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * - not_cached: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestCaching(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestCaching({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestCaching( + props: StreamingProps<'TestCaching'> +): StreamingHookResult<'TestCaching'>; + +export function useTestCaching( + props?: NonStreamingProps<'TestCaching'> +): NonStreamingHookResult<'TestCaching'>; + +export function useTestCaching( + props: HookProps<'TestCaching'> = {} +): StreamingHookResult<'TestCaching'> | NonStreamingHookResult<'TestCaching'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestCaching, props); + } else { + return useBamlAction(Actions.TestCaching, props); + } +} +/** + * A specialized hook for the TestFallbackClient BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFallbackClient(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFallbackClient({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFallbackClient( + props: StreamingProps<'TestFallbackClient'> +): StreamingHookResult<'TestFallbackClient'>; + +export function useTestFallbackClient( + props?: NonStreamingProps<'TestFallbackClient'> +): NonStreamingHookResult<'TestFallbackClient'>; + +export function useTestFallbackClient( + props: HookProps<'TestFallbackClient'> = {} +): StreamingHookResult<'TestFallbackClient'> | NonStreamingHookResult<'TestFallbackClient'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFallbackClient, props); + } else { + return useBamlAction(Actions.TestFallbackClient, props); + } +} +/** + * A specialized hook for the TestFallbackToShorthand BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFallbackToShorthand(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFallbackToShorthand({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFallbackToShorthand( + props: StreamingProps<'TestFallbackToShorthand'> +): StreamingHookResult<'TestFallbackToShorthand'>; + +export function useTestFallbackToShorthand( + props?: NonStreamingProps<'TestFallbackToShorthand'> +): NonStreamingHookResult<'TestFallbackToShorthand'>; + +export function useTestFallbackToShorthand( + props: HookProps<'TestFallbackToShorthand'> = {} +): StreamingHookResult<'TestFallbackToShorthand'> | NonStreamingHookResult<'TestFallbackToShorthand'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFallbackToShorthand, props); + } else { + return useBamlAction(Actions.TestFallbackToShorthand, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleBool BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myBool: boolean + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleBool(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleBool({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleBool( + props: StreamingProps<'TestFnNamedArgsSingleBool'> +): StreamingHookResult<'TestFnNamedArgsSingleBool'>; + +export function useTestFnNamedArgsSingleBool( + props?: NonStreamingProps<'TestFnNamedArgsSingleBool'> +): NonStreamingHookResult<'TestFnNamedArgsSingleBool'>; + +export function useTestFnNamedArgsSingleBool( + props: HookProps<'TestFnNamedArgsSingleBool'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleBool'> | NonStreamingHookResult<'TestFnNamedArgsSingleBool'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleBool, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleBool, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleClass BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myArg: NamedArgsSingleClass + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleClass(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleClass({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleClass( + props: StreamingProps<'TestFnNamedArgsSingleClass'> +): StreamingHookResult<'TestFnNamedArgsSingleClass'>; + +export function useTestFnNamedArgsSingleClass( + props?: NonStreamingProps<'TestFnNamedArgsSingleClass'> +): NonStreamingHookResult<'TestFnNamedArgsSingleClass'>; + +export function useTestFnNamedArgsSingleClass( + props: HookProps<'TestFnNamedArgsSingleClass'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleClass'> | NonStreamingHookResult<'TestFnNamedArgsSingleClass'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleClass, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleClass, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleEnumList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myArg: NamedArgsSingleEnumList[] + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleEnumList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleEnumList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleEnumList( + props: StreamingProps<'TestFnNamedArgsSingleEnumList'> +): StreamingHookResult<'TestFnNamedArgsSingleEnumList'>; + +export function useTestFnNamedArgsSingleEnumList( + props?: NonStreamingProps<'TestFnNamedArgsSingleEnumList'> +): NonStreamingHookResult<'TestFnNamedArgsSingleEnumList'>; + +export function useTestFnNamedArgsSingleEnumList( + props: HookProps<'TestFnNamedArgsSingleEnumList'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleEnumList'> | NonStreamingHookResult<'TestFnNamedArgsSingleEnumList'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleEnumList, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleEnumList, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleFloat BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myFloat: number + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleFloat(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleFloat({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleFloat( + props: StreamingProps<'TestFnNamedArgsSingleFloat'> +): StreamingHookResult<'TestFnNamedArgsSingleFloat'>; + +export function useTestFnNamedArgsSingleFloat( + props?: NonStreamingProps<'TestFnNamedArgsSingleFloat'> +): NonStreamingHookResult<'TestFnNamedArgsSingleFloat'>; + +export function useTestFnNamedArgsSingleFloat( + props: HookProps<'TestFnNamedArgsSingleFloat'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleFloat'> | NonStreamingHookResult<'TestFnNamedArgsSingleFloat'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleFloat, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleFloat, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleInt BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myInt: number + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleInt(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleInt({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleInt( + props: StreamingProps<'TestFnNamedArgsSingleInt'> +): StreamingHookResult<'TestFnNamedArgsSingleInt'>; + +export function useTestFnNamedArgsSingleInt( + props?: NonStreamingProps<'TestFnNamedArgsSingleInt'> +): NonStreamingHookResult<'TestFnNamedArgsSingleInt'>; + +export function useTestFnNamedArgsSingleInt( + props: HookProps<'TestFnNamedArgsSingleInt'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleInt'> | NonStreamingHookResult<'TestFnNamedArgsSingleInt'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleInt, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleInt, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleMapStringToClass BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myMap: Record + * + * + * **Return Type:** + * - **Non‑streaming:** Record + * - **Streaming Partial:** (Record ) + * - **Streaming Final:** Record + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleMapStringToClass(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleMapStringToClass({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleMapStringToClass( + props: StreamingProps<'TestFnNamedArgsSingleMapStringToClass'> +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToClass'>; + +export function useTestFnNamedArgsSingleMapStringToClass( + props?: NonStreamingProps<'TestFnNamedArgsSingleMapStringToClass'> +): NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToClass'>; + +export function useTestFnNamedArgsSingleMapStringToClass( + props: HookProps<'TestFnNamedArgsSingleMapStringToClass'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToClass'> | NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToClass'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleMapStringToClass, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleMapStringToClass, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleMapStringToMap BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myMap: Record> + * + * + * **Return Type:** + * - **Non‑streaming:** Record> + * - **Streaming Partial:** (Record | null)> ) + * - **Streaming Final:** Record> + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleMapStringToMap(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleMapStringToMap({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleMapStringToMap( + props: StreamingProps<'TestFnNamedArgsSingleMapStringToMap'> +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToMap'>; + +export function useTestFnNamedArgsSingleMapStringToMap( + props?: NonStreamingProps<'TestFnNamedArgsSingleMapStringToMap'> +): NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToMap'>; + +export function useTestFnNamedArgsSingleMapStringToMap( + props: HookProps<'TestFnNamedArgsSingleMapStringToMap'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToMap'> | NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToMap'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleMapStringToMap, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleMapStringToMap, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleMapStringToString BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myMap: Record + * + * + * **Return Type:** + * - **Non‑streaming:** Record + * - **Streaming Partial:** (Record ) + * - **Streaming Final:** Record + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleMapStringToString(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleMapStringToString({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleMapStringToString( + props: StreamingProps<'TestFnNamedArgsSingleMapStringToString'> +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToString'>; + +export function useTestFnNamedArgsSingleMapStringToString( + props?: NonStreamingProps<'TestFnNamedArgsSingleMapStringToString'> +): NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToString'>; + +export function useTestFnNamedArgsSingleMapStringToString( + props: HookProps<'TestFnNamedArgsSingleMapStringToString'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleMapStringToString'> | NonStreamingHookResult<'TestFnNamedArgsSingleMapStringToString'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleMapStringToString, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleMapStringToString, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleString BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myString: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleString(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleString({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleString( + props: StreamingProps<'TestFnNamedArgsSingleString'> +): StreamingHookResult<'TestFnNamedArgsSingleString'>; + +export function useTestFnNamedArgsSingleString( + props?: NonStreamingProps<'TestFnNamedArgsSingleString'> +): NonStreamingHookResult<'TestFnNamedArgsSingleString'>; + +export function useTestFnNamedArgsSingleString( + props: HookProps<'TestFnNamedArgsSingleString'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleString'> | NonStreamingHookResult<'TestFnNamedArgsSingleString'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleString, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleString, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleStringArray BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myStringArray: string[] + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleStringArray(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleStringArray({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleStringArray( + props: StreamingProps<'TestFnNamedArgsSingleStringArray'> +): StreamingHookResult<'TestFnNamedArgsSingleStringArray'>; + +export function useTestFnNamedArgsSingleStringArray( + props?: NonStreamingProps<'TestFnNamedArgsSingleStringArray'> +): NonStreamingHookResult<'TestFnNamedArgsSingleStringArray'>; + +export function useTestFnNamedArgsSingleStringArray( + props: HookProps<'TestFnNamedArgsSingleStringArray'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleStringArray'> | NonStreamingHookResult<'TestFnNamedArgsSingleStringArray'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleStringArray, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleStringArray, props); + } +} +/** + * A specialized hook for the TestFnNamedArgsSingleStringList BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myArg: string[] + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestFnNamedArgsSingleStringList(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestFnNamedArgsSingleStringList({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestFnNamedArgsSingleStringList( + props: StreamingProps<'TestFnNamedArgsSingleStringList'> +): StreamingHookResult<'TestFnNamedArgsSingleStringList'>; + +export function useTestFnNamedArgsSingleStringList( + props?: NonStreamingProps<'TestFnNamedArgsSingleStringList'> +): NonStreamingHookResult<'TestFnNamedArgsSingleStringList'>; + +export function useTestFnNamedArgsSingleStringList( + props: HookProps<'TestFnNamedArgsSingleStringList'> = {} +): StreamingHookResult<'TestFnNamedArgsSingleStringList'> | NonStreamingHookResult<'TestFnNamedArgsSingleStringList'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestFnNamedArgsSingleStringList, props); + } else { + return useBamlAction(Actions.TestFnNamedArgsSingleStringList, props); + } +} +/** + * A specialized hook for the TestGemini BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestGemini(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestGemini({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestGemini( + props: StreamingProps<'TestGemini'> +): StreamingHookResult<'TestGemini'>; + +export function useTestGemini( + props?: NonStreamingProps<'TestGemini'> +): NonStreamingHookResult<'TestGemini'>; + +export function useTestGemini( + props: HookProps<'TestGemini'> = {} +): StreamingHookResult<'TestGemini'> | NonStreamingHookResult<'TestGemini'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestGemini, props); + } else { + return useBamlAction(Actions.TestGemini, props); + } +} +/** + * A specialized hook for the TestGeminiOpenAiGeneric BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestGeminiOpenAiGeneric(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestGeminiOpenAiGeneric({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestGeminiOpenAiGeneric( + props: StreamingProps<'TestGeminiOpenAiGeneric'> +): StreamingHookResult<'TestGeminiOpenAiGeneric'>; + +export function useTestGeminiOpenAiGeneric( + props?: NonStreamingProps<'TestGeminiOpenAiGeneric'> +): NonStreamingHookResult<'TestGeminiOpenAiGeneric'>; + +export function useTestGeminiOpenAiGeneric( + props: HookProps<'TestGeminiOpenAiGeneric'> = {} +): StreamingHookResult<'TestGeminiOpenAiGeneric'> | NonStreamingHookResult<'TestGeminiOpenAiGeneric'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestGeminiOpenAiGeneric, props); + } else { + return useBamlAction(Actions.TestGeminiOpenAiGeneric, props); + } +} +/** + * A specialized hook for the TestGeminiSystem BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestGeminiSystem(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestGeminiSystem({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestGeminiSystem( + props: StreamingProps<'TestGeminiSystem'> +): StreamingHookResult<'TestGeminiSystem'>; + +export function useTestGeminiSystem( + props?: NonStreamingProps<'TestGeminiSystem'> +): NonStreamingHookResult<'TestGeminiSystem'>; + +export function useTestGeminiSystem( + props: HookProps<'TestGeminiSystem'> = {} +): StreamingHookResult<'TestGeminiSystem'> | NonStreamingHookResult<'TestGeminiSystem'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestGeminiSystem, props); + } else { + return useBamlAction(Actions.TestGeminiSystem, props); + } +} +/** + * A specialized hook for the TestGeminiSystemAsChat BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestGeminiSystemAsChat(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestGeminiSystemAsChat({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestGeminiSystemAsChat( + props: StreamingProps<'TestGeminiSystemAsChat'> +): StreamingHookResult<'TestGeminiSystemAsChat'>; + +export function useTestGeminiSystemAsChat( + props?: NonStreamingProps<'TestGeminiSystemAsChat'> +): NonStreamingHookResult<'TestGeminiSystemAsChat'>; + +export function useTestGeminiSystemAsChat( + props: HookProps<'TestGeminiSystemAsChat'> = {} +): StreamingHookResult<'TestGeminiSystemAsChat'> | NonStreamingHookResult<'TestGeminiSystemAsChat'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestGeminiSystemAsChat, props); + } else { + return useBamlAction(Actions.TestGeminiSystemAsChat, props); + } +} +/** + * A specialized hook for the TestImageInput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - img: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestImageInput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestImageInput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestImageInput( + props: StreamingProps<'TestImageInput'> +): StreamingHookResult<'TestImageInput'>; + +export function useTestImageInput( + props?: NonStreamingProps<'TestImageInput'> +): NonStreamingHookResult<'TestImageInput'>; + +export function useTestImageInput( + props: HookProps<'TestImageInput'> = {} +): StreamingHookResult<'TestImageInput'> | NonStreamingHookResult<'TestImageInput'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestImageInput, props); + } else { + return useBamlAction(Actions.TestImageInput, props); + } +} +/** + * A specialized hook for the TestImageInputAnthropic BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - img: Image + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestImageInputAnthropic(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestImageInputAnthropic({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestImageInputAnthropic( + props: StreamingProps<'TestImageInputAnthropic'> +): StreamingHookResult<'TestImageInputAnthropic'>; + +export function useTestImageInputAnthropic( + props?: NonStreamingProps<'TestImageInputAnthropic'> +): NonStreamingHookResult<'TestImageInputAnthropic'>; + +export function useTestImageInputAnthropic( + props: HookProps<'TestImageInputAnthropic'> = {} +): StreamingHookResult<'TestImageInputAnthropic'> | NonStreamingHookResult<'TestImageInputAnthropic'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestImageInputAnthropic, props); + } else { + return useBamlAction(Actions.TestImageInputAnthropic, props); + } +} +/** + * A specialized hook for the TestImageListInput BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - imgs: Image[] + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestImageListInput(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestImageListInput({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestImageListInput( + props: StreamingProps<'TestImageListInput'> +): StreamingHookResult<'TestImageListInput'>; + +export function useTestImageListInput( + props?: NonStreamingProps<'TestImageListInput'> +): NonStreamingHookResult<'TestImageListInput'>; + +export function useTestImageListInput( + props: HookProps<'TestImageListInput'> = {} +): StreamingHookResult<'TestImageListInput'> | NonStreamingHookResult<'TestImageListInput'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestImageListInput, props); + } else { + return useBamlAction(Actions.TestImageListInput, props); + } +} +/** + * A specialized hook for the TestMemory BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** TestMemoryOutput + * - **Streaming Partial:** partial_types.TestMemoryOutput + * - **Streaming Final:** TestMemoryOutput + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestMemory(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestMemory({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestMemory( + props: StreamingProps<'TestMemory'> +): StreamingHookResult<'TestMemory'>; + +export function useTestMemory( + props?: NonStreamingProps<'TestMemory'> +): NonStreamingHookResult<'TestMemory'>; + +export function useTestMemory( + props: HookProps<'TestMemory'> = {} +): StreamingHookResult<'TestMemory'> | NonStreamingHookResult<'TestMemory'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestMemory, props); + } else { + return useBamlAction(Actions.TestMemory, props); + } +} +/** + * A specialized hook for the TestMulticlassNamedArgs BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myArg: NamedArgsSingleClass + * + * - myArg2: NamedArgsSingleClass + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestMulticlassNamedArgs(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestMulticlassNamedArgs({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestMulticlassNamedArgs( + props: StreamingProps<'TestMulticlassNamedArgs'> +): StreamingHookResult<'TestMulticlassNamedArgs'>; + +export function useTestMulticlassNamedArgs( + props?: NonStreamingProps<'TestMulticlassNamedArgs'> +): NonStreamingHookResult<'TestMulticlassNamedArgs'>; + +export function useTestMulticlassNamedArgs( + props: HookProps<'TestMulticlassNamedArgs'> = {} +): StreamingHookResult<'TestMulticlassNamedArgs'> | NonStreamingHookResult<'TestMulticlassNamedArgs'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestMulticlassNamedArgs, props); + } else { + return useBamlAction(Actions.TestMulticlassNamedArgs, props); + } +} +/** + * A specialized hook for the TestNamedArgsLiteralBool BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myBool: true + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestNamedArgsLiteralBool(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestNamedArgsLiteralBool({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestNamedArgsLiteralBool( + props: StreamingProps<'TestNamedArgsLiteralBool'> +): StreamingHookResult<'TestNamedArgsLiteralBool'>; + +export function useTestNamedArgsLiteralBool( + props?: NonStreamingProps<'TestNamedArgsLiteralBool'> +): NonStreamingHookResult<'TestNamedArgsLiteralBool'>; + +export function useTestNamedArgsLiteralBool( + props: HookProps<'TestNamedArgsLiteralBool'> = {} +): StreamingHookResult<'TestNamedArgsLiteralBool'> | NonStreamingHookResult<'TestNamedArgsLiteralBool'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestNamedArgsLiteralBool, props); + } else { + return useBamlAction(Actions.TestNamedArgsLiteralBool, props); + } +} +/** + * A specialized hook for the TestNamedArgsLiteralInt BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myInt: 1 + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestNamedArgsLiteralInt(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestNamedArgsLiteralInt({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestNamedArgsLiteralInt( + props: StreamingProps<'TestNamedArgsLiteralInt'> +): StreamingHookResult<'TestNamedArgsLiteralInt'>; + +export function useTestNamedArgsLiteralInt( + props?: NonStreamingProps<'TestNamedArgsLiteralInt'> +): NonStreamingHookResult<'TestNamedArgsLiteralInt'>; + +export function useTestNamedArgsLiteralInt( + props: HookProps<'TestNamedArgsLiteralInt'> = {} +): StreamingHookResult<'TestNamedArgsLiteralInt'> | NonStreamingHookResult<'TestNamedArgsLiteralInt'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestNamedArgsLiteralInt, props); + } else { + return useBamlAction(Actions.TestNamedArgsLiteralInt, props); + } +} +/** + * A specialized hook for the TestNamedArgsLiteralString BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - myString: "My String" + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestNamedArgsLiteralString(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestNamedArgsLiteralString({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestNamedArgsLiteralString( + props: StreamingProps<'TestNamedArgsLiteralString'> +): StreamingHookResult<'TestNamedArgsLiteralString'>; + +export function useTestNamedArgsLiteralString( + props?: NonStreamingProps<'TestNamedArgsLiteralString'> +): NonStreamingHookResult<'TestNamedArgsLiteralString'>; + +export function useTestNamedArgsLiteralString( + props: HookProps<'TestNamedArgsLiteralString'> = {} +): StreamingHookResult<'TestNamedArgsLiteralString'> | NonStreamingHookResult<'TestNamedArgsLiteralString'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestNamedArgsLiteralString, props); + } else { + return useBamlAction(Actions.TestNamedArgsLiteralString, props); + } +} +/** + * A specialized hook for the TestOllama BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOllama(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOllama({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOllama( + props: StreamingProps<'TestOllama'> +): StreamingHookResult<'TestOllama'>; + +export function useTestOllama( + props?: NonStreamingProps<'TestOllama'> +): NonStreamingHookResult<'TestOllama'>; + +export function useTestOllama( + props: HookProps<'TestOllama'> = {} +): StreamingHookResult<'TestOllama'> | NonStreamingHookResult<'TestOllama'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOllama, props); + } else { + return useBamlAction(Actions.TestOllama, props); + } +} +/** + * A specialized hook for the TestOpenAI BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAI(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAI({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAI( + props: StreamingProps<'TestOpenAI'> +): StreamingHookResult<'TestOpenAI'>; + +export function useTestOpenAI( + props?: NonStreamingProps<'TestOpenAI'> +): NonStreamingHookResult<'TestOpenAI'>; + +export function useTestOpenAI( + props: HookProps<'TestOpenAI'> = {} +): StreamingHookResult<'TestOpenAI'> | NonStreamingHookResult<'TestOpenAI'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAI, props); + } else { + return useBamlAction(Actions.TestOpenAI, props); + } +} +/** + * A specialized hook for the TestOpenAILegacyProvider BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAILegacyProvider(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAILegacyProvider({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAILegacyProvider( + props: StreamingProps<'TestOpenAILegacyProvider'> +): StreamingHookResult<'TestOpenAILegacyProvider'>; + +export function useTestOpenAILegacyProvider( + props?: NonStreamingProps<'TestOpenAILegacyProvider'> +): NonStreamingHookResult<'TestOpenAILegacyProvider'>; + +export function useTestOpenAILegacyProvider( + props: HookProps<'TestOpenAILegacyProvider'> = {} +): StreamingHookResult<'TestOpenAILegacyProvider'> | NonStreamingHookResult<'TestOpenAILegacyProvider'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAILegacyProvider, props); + } else { + return useBamlAction(Actions.TestOpenAILegacyProvider, props); + } +} +/** + * A specialized hook for the TestOpenAIO1NoMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIO1NoMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIO1NoMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIO1NoMaxTokens( + props: StreamingProps<'TestOpenAIO1NoMaxTokens'> +): StreamingHookResult<'TestOpenAIO1NoMaxTokens'>; + +export function useTestOpenAIO1NoMaxTokens( + props?: NonStreamingProps<'TestOpenAIO1NoMaxTokens'> +): NonStreamingHookResult<'TestOpenAIO1NoMaxTokens'>; + +export function useTestOpenAIO1NoMaxTokens( + props: HookProps<'TestOpenAIO1NoMaxTokens'> = {} +): StreamingHookResult<'TestOpenAIO1NoMaxTokens'> | NonStreamingHookResult<'TestOpenAIO1NoMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIO1NoMaxTokens, props); + } else { + return useBamlAction(Actions.TestOpenAIO1NoMaxTokens, props); + } +} +/** + * A specialized hook for the TestOpenAIO1WithMaxCompletionTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIO1WithMaxCompletionTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIO1WithMaxCompletionTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIO1WithMaxCompletionTokens( + props: StreamingProps<'TestOpenAIO1WithMaxCompletionTokens'> +): StreamingHookResult<'TestOpenAIO1WithMaxCompletionTokens'>; + +export function useTestOpenAIO1WithMaxCompletionTokens( + props?: NonStreamingProps<'TestOpenAIO1WithMaxCompletionTokens'> +): NonStreamingHookResult<'TestOpenAIO1WithMaxCompletionTokens'>; + +export function useTestOpenAIO1WithMaxCompletionTokens( + props: HookProps<'TestOpenAIO1WithMaxCompletionTokens'> = {} +): StreamingHookResult<'TestOpenAIO1WithMaxCompletionTokens'> | NonStreamingHookResult<'TestOpenAIO1WithMaxCompletionTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIO1WithMaxCompletionTokens, props); + } else { + return useBamlAction(Actions.TestOpenAIO1WithMaxCompletionTokens, props); + } +} +/** + * A specialized hook for the TestOpenAIO1WithMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIO1WithMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIO1WithMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIO1WithMaxTokens( + props: StreamingProps<'TestOpenAIO1WithMaxTokens'> +): StreamingHookResult<'TestOpenAIO1WithMaxTokens'>; + +export function useTestOpenAIO1WithMaxTokens( + props?: NonStreamingProps<'TestOpenAIO1WithMaxTokens'> +): NonStreamingHookResult<'TestOpenAIO1WithMaxTokens'>; + +export function useTestOpenAIO1WithMaxTokens( + props: HookProps<'TestOpenAIO1WithMaxTokens'> = {} +): StreamingHookResult<'TestOpenAIO1WithMaxTokens'> | NonStreamingHookResult<'TestOpenAIO1WithMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIO1WithMaxTokens, props); + } else { + return useBamlAction(Actions.TestOpenAIO1WithMaxTokens, props); + } +} +/** + * A specialized hook for the TestOpenAIShorthand BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIShorthand(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIShorthand({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIShorthand( + props: StreamingProps<'TestOpenAIShorthand'> +): StreamingHookResult<'TestOpenAIShorthand'>; + +export function useTestOpenAIShorthand( + props?: NonStreamingProps<'TestOpenAIShorthand'> +): NonStreamingHookResult<'TestOpenAIShorthand'>; + +export function useTestOpenAIShorthand( + props: HookProps<'TestOpenAIShorthand'> = {} +): StreamingHookResult<'TestOpenAIShorthand'> | NonStreamingHookResult<'TestOpenAIShorthand'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIShorthand, props); + } else { + return useBamlAction(Actions.TestOpenAIShorthand, props); + } +} +/** + * A specialized hook for the TestOpenAIWithMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIWithMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIWithMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIWithMaxTokens( + props: StreamingProps<'TestOpenAIWithMaxTokens'> +): StreamingHookResult<'TestOpenAIWithMaxTokens'>; + +export function useTestOpenAIWithMaxTokens( + props?: NonStreamingProps<'TestOpenAIWithMaxTokens'> +): NonStreamingHookResult<'TestOpenAIWithMaxTokens'>; + +export function useTestOpenAIWithMaxTokens( + props: HookProps<'TestOpenAIWithMaxTokens'> = {} +): StreamingHookResult<'TestOpenAIWithMaxTokens'> | NonStreamingHookResult<'TestOpenAIWithMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIWithMaxTokens, props); + } else { + return useBamlAction(Actions.TestOpenAIWithMaxTokens, props); + } +} +/** + * A specialized hook for the TestOpenAIWithNullMaxTokens BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestOpenAIWithNullMaxTokens(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestOpenAIWithNullMaxTokens({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestOpenAIWithNullMaxTokens( + props: StreamingProps<'TestOpenAIWithNullMaxTokens'> +): StreamingHookResult<'TestOpenAIWithNullMaxTokens'>; + +export function useTestOpenAIWithNullMaxTokens( + props?: NonStreamingProps<'TestOpenAIWithNullMaxTokens'> +): NonStreamingHookResult<'TestOpenAIWithNullMaxTokens'>; + +export function useTestOpenAIWithNullMaxTokens( + props: HookProps<'TestOpenAIWithNullMaxTokens'> = {} +): StreamingHookResult<'TestOpenAIWithNullMaxTokens'> | NonStreamingHookResult<'TestOpenAIWithNullMaxTokens'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestOpenAIWithNullMaxTokens, props); + } else { + return useBamlAction(Actions.TestOpenAIWithNullMaxTokens, props); + } +} +/** + * A specialized hook for the TestRetryConstant BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestRetryConstant(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestRetryConstant({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestRetryConstant( + props: StreamingProps<'TestRetryConstant'> +): StreamingHookResult<'TestRetryConstant'>; + +export function useTestRetryConstant( + props?: NonStreamingProps<'TestRetryConstant'> +): NonStreamingHookResult<'TestRetryConstant'>; + +export function useTestRetryConstant( + props: HookProps<'TestRetryConstant'> = {} +): StreamingHookResult<'TestRetryConstant'> | NonStreamingHookResult<'TestRetryConstant'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestRetryConstant, props); + } else { + return useBamlAction(Actions.TestRetryConstant, props); + } +} +/** + * A specialized hook for the TestRetryExponential BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestRetryExponential(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestRetryExponential({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestRetryExponential( + props: StreamingProps<'TestRetryExponential'> +): StreamingHookResult<'TestRetryExponential'>; + +export function useTestRetryExponential( + props?: NonStreamingProps<'TestRetryExponential'> +): NonStreamingHookResult<'TestRetryExponential'>; + +export function useTestRetryExponential( + props: HookProps<'TestRetryExponential'> = {} +): StreamingHookResult<'TestRetryExponential'> | NonStreamingHookResult<'TestRetryExponential'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestRetryExponential, props); + } else { + return useBamlAction(Actions.TestRetryExponential, props); + } +} +/** + * A specialized hook for the TestSingleFallbackClient BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestSingleFallbackClient(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestSingleFallbackClient({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestSingleFallbackClient( + props: StreamingProps<'TestSingleFallbackClient'> +): StreamingHookResult<'TestSingleFallbackClient'>; + +export function useTestSingleFallbackClient( + props?: NonStreamingProps<'TestSingleFallbackClient'> +): NonStreamingHookResult<'TestSingleFallbackClient'>; + +export function useTestSingleFallbackClient( + props: HookProps<'TestSingleFallbackClient'> = {} +): StreamingHookResult<'TestSingleFallbackClient'> | NonStreamingHookResult<'TestSingleFallbackClient'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestSingleFallbackClient, props); + } else { + return useBamlAction(Actions.TestSingleFallbackClient, props); + } +} +/** + * A specialized hook for the TestUniverseQuestion BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - question: UniverseQuestionInput + * + * + * **Return Type:** + * - **Non‑streaming:** UniverseQuestion + * - **Streaming Partial:** partial_types.UniverseQuestion + * - **Streaming Final:** UniverseQuestion + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestUniverseQuestion(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestUniverseQuestion({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestUniverseQuestion( + props: StreamingProps<'TestUniverseQuestion'> +): StreamingHookResult<'TestUniverseQuestion'>; + +export function useTestUniverseQuestion( + props?: NonStreamingProps<'TestUniverseQuestion'> +): NonStreamingHookResult<'TestUniverseQuestion'>; + +export function useTestUniverseQuestion( + props: HookProps<'TestUniverseQuestion'> = {} +): StreamingHookResult<'TestUniverseQuestion'> | NonStreamingHookResult<'TestUniverseQuestion'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestUniverseQuestion, props); + } else { + return useBamlAction(Actions.TestUniverseQuestion, props); + } +} +/** + * A specialized hook for the TestVertex BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestVertex(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestVertex({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestVertex( + props: StreamingProps<'TestVertex'> +): StreamingHookResult<'TestVertex'>; + +export function useTestVertex( + props?: NonStreamingProps<'TestVertex'> +): NonStreamingHookResult<'TestVertex'>; + +export function useTestVertex( + props: HookProps<'TestVertex'> = {} +): StreamingHookResult<'TestVertex'> | NonStreamingHookResult<'TestVertex'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestVertex, props); + } else { + return useBamlAction(Actions.TestVertex, props); + } +} +/** + * A specialized hook for the TestVertexWithSystemInstructions BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * + * **Return Type:** + * - **Non‑streaming:** string + * - **Streaming Partial:** string + * - **Streaming Final:** string + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useTestVertexWithSystemInstructions(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useTestVertexWithSystemInstructions({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useTestVertexWithSystemInstructions( + props: StreamingProps<'TestVertexWithSystemInstructions'> +): StreamingHookResult<'TestVertexWithSystemInstructions'>; + +export function useTestVertexWithSystemInstructions( + props?: NonStreamingProps<'TestVertexWithSystemInstructions'> +): NonStreamingHookResult<'TestVertexWithSystemInstructions'>; + +export function useTestVertexWithSystemInstructions( + props: HookProps<'TestVertexWithSystemInstructions'> = {} +): StreamingHookResult<'TestVertexWithSystemInstructions'> | NonStreamingHookResult<'TestVertexWithSystemInstructions'> { + if (props.stream) { + return useBamlAction(StreamingActions.TestVertexWithSystemInstructions, props); + } else { + return useBamlAction(Actions.TestVertexWithSystemInstructions, props); + } +} +/** + * A specialized hook for the UnionTest_Function BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - input: string | boolean + * + * + * **Return Type:** + * - **Non‑streaming:** UnionTest_ReturnType + * - **Streaming Partial:** partial_types.UnionTest_ReturnType + * - **Streaming Final:** UnionTest_ReturnType + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useUnionTest_Function(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useUnionTest_Function({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useUnionTest_Function( + props: StreamingProps<'UnionTest_Function'> +): StreamingHookResult<'UnionTest_Function'>; + +export function useUnionTest_Function( + props?: NonStreamingProps<'UnionTest_Function'> +): NonStreamingHookResult<'UnionTest_Function'>; + +export function useUnionTest_Function( + props: HookProps<'UnionTest_Function'> = {} +): StreamingHookResult<'UnionTest_Function'> | NonStreamingHookResult<'UnionTest_Function'> { + if (props.stream) { + return useBamlAction(StreamingActions.UnionTest_Function, props); + } else { + return useBamlAction(Actions.UnionTest_Function, props); + } +} +/** + * A specialized hook for the UseBlockConstraint BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - inp: BlockConstraintForParam + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useUseBlockConstraint(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useUseBlockConstraint({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useUseBlockConstraint( + props: StreamingProps<'UseBlockConstraint'> +): StreamingHookResult<'UseBlockConstraint'>; + +export function useUseBlockConstraint( + props?: NonStreamingProps<'UseBlockConstraint'> +): NonStreamingHookResult<'UseBlockConstraint'>; + +export function useUseBlockConstraint( + props: HookProps<'UseBlockConstraint'> = {} +): StreamingHookResult<'UseBlockConstraint'> | NonStreamingHookResult<'UseBlockConstraint'> { + if (props.stream) { + return useBamlAction(StreamingActions.UseBlockConstraint, props); + } else { + return useBamlAction(Actions.UseBlockConstraint, props); + } +} +/** + * A specialized hook for the UseMalformedConstraints BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - a: MalformedConstraints2 + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useUseMalformedConstraints(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useUseMalformedConstraints({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useUseMalformedConstraints( + props: StreamingProps<'UseMalformedConstraints'> +): StreamingHookResult<'UseMalformedConstraints'>; + +export function useUseMalformedConstraints( + props?: NonStreamingProps<'UseMalformedConstraints'> +): NonStreamingHookResult<'UseMalformedConstraints'>; + +export function useUseMalformedConstraints( + props: HookProps<'UseMalformedConstraints'> = {} +): StreamingHookResult<'UseMalformedConstraints'> | NonStreamingHookResult<'UseMalformedConstraints'> { + if (props.stream) { + return useBamlAction(StreamingActions.UseMalformedConstraints, props); + } else { + return useBamlAction(Actions.UseMalformedConstraints, props); + } +} +/** + * A specialized hook for the UseNestedBlockConstraint BAML function that supports both streaming and non‑streaming responses. + * + * **Input Types:** + * + * - inp: NestedBlockConstraintForParam + * + * + * **Return Type:** + * - **Non‑streaming:** number + * - **Streaming Partial:** number + * - **Streaming Final:** number + * + * **Usage Patterns:** + * 1. **Non‑streaming (Default)** + * - Best for quick responses and simple UI updates. + * 2. **Streaming** + * - Ideal for long‑running operations or real‑time feedback. + * + * **Edge Cases:** + * - Ensure robust error handling via `onError`. + * - Handle cases where partial data may be incomplete or missing. + * + * @example + * ```tsx + * // Basic non‑streaming usage: + * const { data, error, isPending, mutate } = useUseNestedBlockConstraint(); + * + * // Streaming usage: + * const { data, partialData, isPending, error, mutate } = useUseNestedBlockConstraint({ + * stream: true, + * onPartial: (partial) => console.log('Partial update:', partial), + * onFinal: (final) => console.log('Final result:', final), + * onError: (err) => console.error('Error:', err), + * }); + * ``` + */ +export function useUseNestedBlockConstraint( + props: StreamingProps<'UseNestedBlockConstraint'> +): StreamingHookResult<'UseNestedBlockConstraint'>; + +export function useUseNestedBlockConstraint( + props?: NonStreamingProps<'UseNestedBlockConstraint'> +): NonStreamingHookResult<'UseNestedBlockConstraint'>; + +export function useUseNestedBlockConstraint( + props: HookProps<'UseNestedBlockConstraint'> = {} +): StreamingHookResult<'UseNestedBlockConstraint'> | NonStreamingHookResult<'UseNestedBlockConstraint'> { + if (props.stream) { + return useBamlAction(StreamingActions.UseNestedBlockConstraint, props); + } else { + return useBamlAction(Actions.UseNestedBlockConstraint, props); + } +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/react/server.ts b/integ-tests/react/baml_client/react/server.ts new file mode 100644 index 000000000..dbb4087a5 --- /dev/null +++ b/integ-tests/react/baml_client/react/server.ts @@ -0,0 +1,2844 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +'use server' + +import { b } from '../index'; +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { AnotherObject, BigNumbers, BinaryNode, Blah, BlockConstraint, BlockConstraintForParam, BookOrder, ClassForNullLiteral, ClassOptionalOutput, ClassOptionalOutput2, ClassToRecAlias, ClassWithBlockDone, ClassWithImage, ClassWithoutDone, ComplexMemoryObject, CompoundBigNumbers, ContactInfo, CustomTaskResult, DummyOutput, DynInputOutput, DynamicClassOne, DynamicClassTwo, DynamicOutput, Earthling, Education, Email, EmailAddress, Event, FakeImage, FlightConfirmation, FooAny, Forest, FormatterTest0, FormatterTest1, FormatterTest2, FormatterTest3, GroceryReceipt, InnerClass, InnerClass2, InputClass, InputClassNested, LinkedList, LinkedListAliasNode, LiteralClassHello, LiteralClassOne, LiteralClassTwo, MalformedConstraints, MalformedConstraints2, Martian, MemoryObject, MergeAttrs, NamedArgsSingleClass, Nested, Nested2, NestedBlockConstraint, NestedBlockConstraintForParam, Node, NodeWithAliasIndirection, OptionalListAndMap, OptionalTest_Prop1, OptionalTest_ReturnType, OrderInfo, OriginalA, OriginalB, Person, PhoneNumber, Quantity, RaysData, ReceiptInfo, ReceiptItem, Recipe, RecursiveAliasDependency, Resume, Schema, SearchParams, SemanticContainer, SmallThing, SomeClassNestedDynamic, StringToClassEntry, TestClassAlias, TestClassNested, TestClassWithEnum, TestMemoryOutput, TestOutputClass, Tree, TwoStoriesOneTitle, UnionTest_ReturnType, UniverseQuestion, UniverseQuestionInput, WithReasoning, AliasedEnum, Category, Category2, Category3, Color, DataType, DynEnumOne, DynEnumTwo, EnumInClass, EnumOutput, Hobby, MapKey, NamedArgsSingleEnum, NamedArgsSingleEnumList, OptionalTest_CategoryType, OrderStatus, Tag, TestEnum, RecursiveMapAlias, RecursiveListAlias, RecAliasOne, RecAliasTwo, RecAliasThree, JsonValue, JsonObject, JsonArray } from "../types" + +import type * as types from "../types" + +/** + * Regular BAML server actions that return direct responses. + */ + +/** + * Executes the "AaaSamOutputFormat" BAML action. + * + * This server action calls the underlying BAML function "AaaSamOutputFormat" + * with the specified parameters. + * + * @param { string } recipe - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AaaSamOutputFormat = async ( + recipe: string, +): Promise => { + return b.AaaSamOutputFormat( + recipe, + ); +}; + +/** + * Executes the "AliasThatPointsToRecursiveType" BAML action. + * + * This server action calls the underlying BAML function "AliasThatPointsToRecursiveType" + * with the specified parameters. + * + * @param { LinkedListAliasNode } list - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasThatPointsToRecursiveType = async ( + list: LinkedListAliasNode, +): Promise => { + return b.AliasThatPointsToRecursiveType( + list, + ); +}; + +/** + * Executes the "AliasWithMultipleAttrs" BAML action. + * + * This server action calls the underlying BAML function "AliasWithMultipleAttrs" + * with the specified parameters. + * + * @param { Checked } money - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const AliasWithMultipleAttrs = async ( + money: Checked, +): Promise> => { + return b.AliasWithMultipleAttrs( + money, + ); +}; + +/** + * Executes the "AliasedInputClass" BAML action. + * + * This server action calls the underlying BAML function "AliasedInputClass" + * with the specified parameters. + * + * @param { InputClass } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasedInputClass = async ( + input: InputClass, +): Promise => { + return b.AliasedInputClass( + input, + ); +}; + +/** + * Executes the "AliasedInputClass2" BAML action. + * + * This server action calls the underlying BAML function "AliasedInputClass2" + * with the specified parameters. + * + * @param { InputClass } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasedInputClass2 = async ( + input: InputClass, +): Promise => { + return b.AliasedInputClass2( + input, + ); +}; + +/** + * Executes the "AliasedInputClassNested" BAML action. + * + * This server action calls the underlying BAML function "AliasedInputClassNested" + * with the specified parameters. + * + * @param { InputClassNested } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasedInputClassNested = async ( + input: InputClassNested, +): Promise => { + return b.AliasedInputClassNested( + input, + ); +}; + +/** + * Executes the "AliasedInputEnum" BAML action. + * + * This server action calls the underlying BAML function "AliasedInputEnum" + * with the specified parameters. + * + * @param { AliasedEnum } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasedInputEnum = async ( + input: AliasedEnum, +): Promise => { + return b.AliasedInputEnum( + input, + ); +}; + +/** + * Executes the "AliasedInputList" BAML action. + * + * This server action calls the underlying BAML function "AliasedInputList" + * with the specified parameters. + * + * @param { AliasedEnum[] } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AliasedInputList = async ( + input: AliasedEnum[], +): Promise => { + return b.AliasedInputList( + input, + ); +}; + +/** + * Executes the "AllowedOptionals" BAML action. + * + * This server action calls the underlying BAML function "AllowedOptionals" + * with the specified parameters. + * + * @param { OptionalListAndMap } optionals - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AllowedOptionals = async ( + optionals: OptionalListAndMap, +): Promise => { + return b.AllowedOptionals( + optionals, + ); +}; + +/** + * Executes the "AssertFn" BAML action. + * + * This server action calls the underlying BAML function "AssertFn" + * with the specified parameters. + * + * @param { number } a - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AssertFn = async ( + a: number, +): Promise => { + return b.AssertFn( + a, + ); +}; + +/** + * Executes the "AudioInput" BAML action. + * + * This server action calls the underlying BAML function "AudioInput" + * with the specified parameters. + * + * @param { Audio } aud - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const AudioInput = async ( + aud: Audio, +): Promise => { + return b.AudioInput( + aud, + ); +}; + +/** + * Executes the "BuildLinkedList" BAML action. + * + * This server action calls the underlying BAML function "BuildLinkedList" + * with the specified parameters. + * + * @param { number[] } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const BuildLinkedList = async ( + input: number[], +): Promise => { + return b.BuildLinkedList( + input, + ); +}; + +/** + * Executes the "BuildTree" BAML action. + * + * This server action calls the underlying BAML function "BuildTree" + * with the specified parameters. + * + * @param { BinaryNode } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const BuildTree = async ( + input: BinaryNode, +): Promise => { + return b.BuildTree( + input, + ); +}; + +/** + * Executes the "ClassThatPointsToRecursiveClassThroughAlias" BAML action. + * + * This server action calls the underlying BAML function "ClassThatPointsToRecursiveClassThroughAlias" + * with the specified parameters. + * + * @param { ClassToRecAlias } cls - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ClassThatPointsToRecursiveClassThroughAlias = async ( + cls: ClassToRecAlias, +): Promise => { + return b.ClassThatPointsToRecursiveClassThroughAlias( + cls, + ); +}; + +/** + * Executes the "ClassifyDynEnumTwo" BAML action. + * + * This server action calls the underlying BAML function "ClassifyDynEnumTwo" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise<(string | DynEnumTwo)>} A promise that resolves with the result of the action. + */ +export const ClassifyDynEnumTwo = async ( + input: string, +): Promise<(string | DynEnumTwo)> => { + return b.ClassifyDynEnumTwo( + input, + ); +}; + +/** + * Executes the "ClassifyMessage" BAML action. + * + * This server action calls the underlying BAML function "ClassifyMessage" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ClassifyMessage = async ( + input: string, +): Promise => { + return b.ClassifyMessage( + input, + ); +}; + +/** + * Executes the "ClassifyMessage2" BAML action. + * + * This server action calls the underlying BAML function "ClassifyMessage2" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ClassifyMessage2 = async ( + input: string, +): Promise => { + return b.ClassifyMessage2( + input, + ); +}; + +/** + * Executes the "ClassifyMessage3" BAML action. + * + * This server action calls the underlying BAML function "ClassifyMessage3" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ClassifyMessage3 = async ( + input: string, +): Promise => { + return b.ClassifyMessage3( + input, + ); +}; + +/** + * Executes the "Completion" BAML action. + * + * This server action calls the underlying BAML function "Completion" + * with the specified parameters. + * + * @param { string } prefix - Input parameter. + * @param { string } suffix - Input parameter. + * @param { string } language - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const Completion = async ( + prefix: string, + suffix: string, + language: string, +): Promise => { + return b.Completion( + prefix, + suffix, + language, + ); +}; + +/** + * Executes the "CustomTask" BAML action. + * + * This server action calls the underlying BAML function "CustomTask" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const CustomTask = async ( + input: string, +): Promise => { + return b.CustomTask( + input, + ); +}; + +/** + * Executes the "DescribeImage" BAML action. + * + * This server action calls the underlying BAML function "DescribeImage" + * with the specified parameters. + * + * @param { Image } img - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DescribeImage = async ( + img: Image, +): Promise => { + return b.DescribeImage( + img, + ); +}; + +/** + * Executes the "DescribeImage2" BAML action. + * + * This server action calls the underlying BAML function "DescribeImage2" + * with the specified parameters. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DescribeImage2 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise => { + return b.DescribeImage2( + classWithImage, + img2, + ); +}; + +/** + * Executes the "DescribeImage3" BAML action. + * + * This server action calls the underlying BAML function "DescribeImage3" + * with the specified parameters. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DescribeImage3 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise => { + return b.DescribeImage3( + classWithImage, + img2, + ); +}; + +/** + * Executes the "DescribeImage4" BAML action. + * + * This server action calls the underlying BAML function "DescribeImage4" + * with the specified parameters. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DescribeImage4 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise => { + return b.DescribeImage4( + classWithImage, + img2, + ); +}; + +/** + * Executes the "DifferentiateUnions" BAML action. + * + * This server action calls the underlying BAML function "DifferentiateUnions" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DifferentiateUnions = async ( +): Promise => { + return b.DifferentiateUnions( + ); +}; + +/** + * Executes the "DummyOutputFunction" BAML action. + * + * This server action calls the underlying BAML function "DummyOutputFunction" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DummyOutputFunction = async ( + input: string, +): Promise => { + return b.DummyOutputFunction( + input, + ); +}; + +/** + * Executes the "DynamicFunc" BAML action. + * + * This server action calls the underlying BAML function "DynamicFunc" + * with the specified parameters. + * + * @param { DynamicClassOne } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DynamicFunc = async ( + input: DynamicClassOne, +): Promise => { + return b.DynamicFunc( + input, + ); +}; + +/** + * Executes the "DynamicInputOutput" BAML action. + * + * This server action calls the underlying BAML function "DynamicInputOutput" + * with the specified parameters. + * + * @param { DynInputOutput } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DynamicInputOutput = async ( + input: DynInputOutput, +): Promise => { + return b.DynamicInputOutput( + input, + ); +}; + +/** + * Executes the "DynamicListInputOutput" BAML action. + * + * This server action calls the underlying BAML function "DynamicListInputOutput" + * with the specified parameters. + * + * @param { DynInputOutput[] } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const DynamicListInputOutput = async ( + input: DynInputOutput[], +): Promise => { + return b.DynamicListInputOutput( + input, + ); +}; + +/** + * Executes the "ExpectFailure" BAML action. + * + * This server action calls the underlying BAML function "ExpectFailure" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExpectFailure = async ( +): Promise => { + return b.ExpectFailure( + ); +}; + +/** + * Executes the "ExtractContactInfo" BAML action. + * + * This server action calls the underlying BAML function "ExtractContactInfo" + * with the specified parameters. + * + * @param { string } document - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractContactInfo = async ( + document: string, +): Promise => { + return b.ExtractContactInfo( + document, + ); +}; + +/** + * Executes the "ExtractHobby" BAML action. + * + * This server action calls the underlying BAML function "ExtractHobby" + * with the specified parameters. + * + * @param { string } text - Input parameter. + * + * @returns {Promise<(string | Hobby)[]>} A promise that resolves with the result of the action. + */ +export const ExtractHobby = async ( + text: string, +): Promise<(string | Hobby)[]> => { + return b.ExtractHobby( + text, + ); +}; + +/** + * Executes the "ExtractNames" BAML action. + * + * This server action calls the underlying BAML function "ExtractNames" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractNames = async ( + input: string, +): Promise => { + return b.ExtractNames( + input, + ); +}; + +/** + * Executes the "ExtractPeople" BAML action. + * + * This server action calls the underlying BAML function "ExtractPeople" + * with the specified parameters. + * + * @param { string } text - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractPeople = async ( + text: string, +): Promise => { + return b.ExtractPeople( + text, + ); +}; + +/** + * Executes the "ExtractReceiptInfo" BAML action. + * + * This server action calls the underlying BAML function "ExtractReceiptInfo" + * with the specified parameters. + * + * @param { string } email - Input parameter. + * @param { "curiosity" | "personal_finance" } reason - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractReceiptInfo = async ( + email: string, + reason: "curiosity" | "personal_finance", +): Promise => { + return b.ExtractReceiptInfo( + email, + reason, + ); +}; + +/** + * Executes the "ExtractResume" BAML action. + * + * This server action calls the underlying BAML function "ExtractResume" + * with the specified parameters. + * + * @param { string } resume - Input parameter. + * @param { Image | null } img (optional) - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractResume = async ( + resume: string, + img?: Image | null, +): Promise => { + return b.ExtractResume( + resume, + img, + ); +}; + +/** + * Executes the "ExtractResume2" BAML action. + * + * This server action calls the underlying BAML function "ExtractResume2" + * with the specified parameters. + * + * @param { string } resume - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ExtractResume2 = async ( + resume: string, +): Promise => { + return b.ExtractResume2( + resume, + ); +}; + +/** + * Executes the "FnClassOptionalOutput" BAML action. + * + * This server action calls the underlying BAML function "FnClassOptionalOutput" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnClassOptionalOutput = async ( + input: string, +): Promise => { + return b.FnClassOptionalOutput( + input, + ); +}; + +/** + * Executes the "FnClassOptionalOutput2" BAML action. + * + * This server action calls the underlying BAML function "FnClassOptionalOutput2" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnClassOptionalOutput2 = async ( + input: string, +): Promise => { + return b.FnClassOptionalOutput2( + input, + ); +}; + +/** + * Executes the "FnEnumListOutput" BAML action. + * + * This server action calls the underlying BAML function "FnEnumListOutput" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnEnumListOutput = async ( + input: string, +): Promise => { + return b.FnEnumListOutput( + input, + ); +}; + +/** + * Executes the "FnEnumOutput" BAML action. + * + * This server action calls the underlying BAML function "FnEnumOutput" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnEnumOutput = async ( + input: string, +): Promise => { + return b.FnEnumOutput( + input, + ); +}; + +/** + * Executes the "FnLiteralClassInputOutput" BAML action. + * + * This server action calls the underlying BAML function "FnLiteralClassInputOutput" + * with the specified parameters. + * + * @param { LiteralClassHello } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnLiteralClassInputOutput = async ( + input: LiteralClassHello, +): Promise => { + return b.FnLiteralClassInputOutput( + input, + ); +}; + +/** + * Executes the "FnLiteralUnionClassInputOutput" BAML action. + * + * This server action calls the underlying BAML function "FnLiteralUnionClassInputOutput" + * with the specified parameters. + * + * @param { LiteralClassOne | LiteralClassTwo } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnLiteralUnionClassInputOutput = async ( + input: LiteralClassOne | LiteralClassTwo, +): Promise => { + return b.FnLiteralUnionClassInputOutput( + input, + ); +}; + +/** + * Executes the "FnNamedArgsSingleStringOptional" BAML action. + * + * This server action calls the underlying BAML function "FnNamedArgsSingleStringOptional" + * with the specified parameters. + * + * @param { string | null } myString (optional) - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnNamedArgsSingleStringOptional = async ( + myString?: string | null, +): Promise => { + return b.FnNamedArgsSingleStringOptional( + myString, + ); +}; + +/** + * Executes the "FnOutputBool" BAML action. + * + * This server action calls the underlying BAML function "FnOutputBool" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputBool = async ( + input: string, +): Promise => { + return b.FnOutputBool( + input, + ); +}; + +/** + * Executes the "FnOutputClass" BAML action. + * + * This server action calls the underlying BAML function "FnOutputClass" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputClass = async ( + input: string, +): Promise => { + return b.FnOutputClass( + input, + ); +}; + +/** + * Executes the "FnOutputClassList" BAML action. + * + * This server action calls the underlying BAML function "FnOutputClassList" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputClassList = async ( + input: string, +): Promise => { + return b.FnOutputClassList( + input, + ); +}; + +/** + * Executes the "FnOutputClassNested" BAML action. + * + * This server action calls the underlying BAML function "FnOutputClassNested" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputClassNested = async ( + input: string, +): Promise => { + return b.FnOutputClassNested( + input, + ); +}; + +/** + * Executes the "FnOutputClassWithEnum" BAML action. + * + * This server action calls the underlying BAML function "FnOutputClassWithEnum" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputClassWithEnum = async ( + input: string, +): Promise => { + return b.FnOutputClassWithEnum( + input, + ); +}; + +/** + * Executes the "FnOutputInt" BAML action. + * + * This server action calls the underlying BAML function "FnOutputInt" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputInt = async ( + input: string, +): Promise => { + return b.FnOutputInt( + input, + ); +}; + +/** + * Executes the "FnOutputLiteralBool" BAML action. + * + * This server action calls the underlying BAML function "FnOutputLiteralBool" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputLiteralBool = async ( + input: string, +): Promise => { + return b.FnOutputLiteralBool( + input, + ); +}; + +/** + * Executes the "FnOutputLiteralInt" BAML action. + * + * This server action calls the underlying BAML function "FnOutputLiteralInt" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise<5>} A promise that resolves with the result of the action. + */ +export const FnOutputLiteralInt = async ( + input: string, +): Promise<5> => { + return b.FnOutputLiteralInt( + input, + ); +}; + +/** + * Executes the "FnOutputLiteralString" BAML action. + * + * This server action calls the underlying BAML function "FnOutputLiteralString" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise<"example output">} A promise that resolves with the result of the action. + */ +export const FnOutputLiteralString = async ( + input: string, +): Promise<"example output"> => { + return b.FnOutputLiteralString( + input, + ); +}; + +/** + * Executes the "FnOutputStringList" BAML action. + * + * This server action calls the underlying BAML function "FnOutputStringList" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnOutputStringList = async ( + input: string, +): Promise => { + return b.FnOutputStringList( + input, + ); +}; + +/** + * Executes the "FnTestAliasedEnumOutput" BAML action. + * + * This server action calls the underlying BAML function "FnTestAliasedEnumOutput" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnTestAliasedEnumOutput = async ( + input: string, +): Promise => { + return b.FnTestAliasedEnumOutput( + input, + ); +}; + +/** + * Executes the "FnTestClassAlias" BAML action. + * + * This server action calls the underlying BAML function "FnTestClassAlias" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnTestClassAlias = async ( + input: string, +): Promise => { + return b.FnTestClassAlias( + input, + ); +}; + +/** + * Executes the "FnTestNamedArgsSingleEnum" BAML action. + * + * This server action calls the underlying BAML function "FnTestNamedArgsSingleEnum" + * with the specified parameters. + * + * @param { NamedArgsSingleEnum } myArg - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const FnTestNamedArgsSingleEnum = async ( + myArg: NamedArgsSingleEnum, +): Promise => { + return b.FnTestNamedArgsSingleEnum( + myArg, + ); +}; + +/** + * Executes the "GetDataType" BAML action. + * + * This server action calls the underlying BAML function "GetDataType" + * with the specified parameters. + * + * @param { string } text - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const GetDataType = async ( + text: string, +): Promise => { + return b.GetDataType( + text, + ); +}; + +/** + * Executes the "GetOrderInfo" BAML action. + * + * This server action calls the underlying BAML function "GetOrderInfo" + * with the specified parameters. + * + * @param { Email } email - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const GetOrderInfo = async ( + email: Email, +): Promise => { + return b.GetOrderInfo( + email, + ); +}; + +/** + * Executes the "GetQuery" BAML action. + * + * This server action calls the underlying BAML function "GetQuery" + * with the specified parameters. + * + * @param { string } query - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const GetQuery = async ( + query: string, +): Promise => { + return b.GetQuery( + query, + ); +}; + +/** + * Executes the "InOutEnumMapKey" BAML action. + * + * This server action calls the underlying BAML function "InOutEnumMapKey" + * with the specified parameters. + * + * @param { Partial> } i1 - Input parameter. + * @param { Partial> } i2 - Input parameter. + * + * @returns {Promise>>} A promise that resolves with the result of the action. + */ +export const InOutEnumMapKey = async ( + i1: Partial>, + i2: Partial>, +): Promise>> => { + return b.InOutEnumMapKey( + i1, + i2, + ); +}; + +/** + * Executes the "InOutLiteralStringUnionMapKey" BAML action. + * + * This server action calls the underlying BAML function "InOutLiteralStringUnionMapKey" + * with the specified parameters. + * + * @param { Partial> } i1 - Input parameter. + * @param { Partial> } i2 - Input parameter. + * + * @returns {Promise>>} A promise that resolves with the result of the action. + */ +export const InOutLiteralStringUnionMapKey = async ( + i1: Partial>, + i2: Partial>, +): Promise>> => { + return b.InOutLiteralStringUnionMapKey( + i1, + i2, + ); +}; + +/** + * Executes the "InOutSingleLiteralStringMapKey" BAML action. + * + * This server action calls the underlying BAML function "InOutSingleLiteralStringMapKey" + * with the specified parameters. + * + * @param { Partial> } m - Input parameter. + * + * @returns {Promise>>} A promise that resolves with the result of the action. + */ +export const InOutSingleLiteralStringMapKey = async ( + m: Partial>, +): Promise>> => { + return b.InOutSingleLiteralStringMapKey( + m, + ); +}; + +/** + * Executes the "JsonTypeAliasCycle" BAML action. + * + * This server action calls the underlying BAML function "JsonTypeAliasCycle" + * with the specified parameters. + * + * @param { JsonValue } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const JsonTypeAliasCycle = async ( + input: JsonValue, +): Promise => { + return b.JsonTypeAliasCycle( + input, + ); +}; + +/** + * Executes the "LiteralUnionsTest" BAML action. + * + * This server action calls the underlying BAML function "LiteralUnionsTest" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise<1 | true | "string output">} A promise that resolves with the result of the action. + */ +export const LiteralUnionsTest = async ( + input: string, +): Promise<1 | true | "string output"> => { + return b.LiteralUnionsTest( + input, + ); +}; + +/** + * Executes the "MakeBlockConstraint" BAML action. + * + * This server action calls the underlying BAML function "MakeBlockConstraint" + * with the specified parameters. + * + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const MakeBlockConstraint = async ( +): Promise> => { + return b.MakeBlockConstraint( + ); +}; + +/** + * Executes the "MakeNestedBlockConstraint" BAML action. + * + * This server action calls the underlying BAML function "MakeNestedBlockConstraint" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const MakeNestedBlockConstraint = async ( +): Promise => { + return b.MakeNestedBlockConstraint( + ); +}; + +/** + * Executes the "MakeSemanticContainer" BAML action. + * + * This server action calls the underlying BAML function "MakeSemanticContainer" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const MakeSemanticContainer = async ( +): Promise => { + return b.MakeSemanticContainer( + ); +}; + +/** + * Executes the "MapAlias" BAML action. + * + * This server action calls the underlying BAML function "MapAlias" + * with the specified parameters. + * + * @param { Record } m - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const MapAlias = async ( + m: Record, +): Promise> => { + return b.MapAlias( + m, + ); +}; + +/** + * Executes the "MergeAliasAttributes" BAML action. + * + * This server action calls the underlying BAML function "MergeAliasAttributes" + * with the specified parameters. + * + * @param { number } money - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const MergeAliasAttributes = async ( + money: number, +): Promise => { + return b.MergeAliasAttributes( + money, + ); +}; + +/** + * Executes the "MyFunc" BAML action. + * + * This server action calls the underlying BAML function "MyFunc" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const MyFunc = async ( + input: string, +): Promise => { + return b.MyFunc( + input, + ); +}; + +/** + * Executes the "NestedAlias" BAML action. + * + * This server action calls the underlying BAML function "NestedAlias" + * with the specified parameters. + * + * @param { number | string | boolean | number | string[] | Record } c - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const NestedAlias = async ( + c: number | string | boolean | number | string[] | Record, +): Promise> => { + return b.NestedAlias( + c, + ); +}; + +/** + * Executes the "NullLiteralClassHello" BAML action. + * + * This server action calls the underlying BAML function "NullLiteralClassHello" + * with the specified parameters. + * + * @param { string } s - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const NullLiteralClassHello = async ( + s: string, +): Promise => { + return b.NullLiteralClassHello( + s, + ); +}; + +/** + * Executes the "OptionalTest_Function" BAML action. + * + * This server action calls the underlying BAML function "OptionalTest_Function" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise<(OptionalTest_ReturnType | null)[]>} A promise that resolves with the result of the action. + */ +export const OptionalTest_Function = async ( + input: string, +): Promise<(OptionalTest_ReturnType | null)[]> => { + return b.OptionalTest_Function( + input, + ); +}; + +/** + * Executes the "PredictAge" BAML action. + * + * This server action calls the underlying BAML function "PredictAge" + * with the specified parameters. + * + * @param { string } name - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PredictAge = async ( + name: string, +): Promise => { + return b.PredictAge( + name, + ); +}; + +/** + * Executes the "PredictAgeBare" BAML action. + * + * This server action calls the underlying BAML function "PredictAgeBare" + * with the specified parameters. + * + * @param { string } inp - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const PredictAgeBare = async ( + inp: string, +): Promise> => { + return b.PredictAgeBare( + inp, + ); +}; + +/** + * Executes the "PrimitiveAlias" BAML action. + * + * This server action calls the underlying BAML function "PrimitiveAlias" + * with the specified parameters. + * + * @param { number | string | boolean | number } p - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PrimitiveAlias = async ( + p: number | string | boolean | number, +): Promise => { + return b.PrimitiveAlias( + p, + ); +}; + +/** + * Executes the "PromptTestClaude" BAML action. + * + * This server action calls the underlying BAML function "PromptTestClaude" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestClaude = async ( + input: string, +): Promise => { + return b.PromptTestClaude( + input, + ); +}; + +/** + * Executes the "PromptTestClaudeChat" BAML action. + * + * This server action calls the underlying BAML function "PromptTestClaudeChat" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestClaudeChat = async ( + input: string, +): Promise => { + return b.PromptTestClaudeChat( + input, + ); +}; + +/** + * Executes the "PromptTestClaudeChatNoSystem" BAML action. + * + * This server action calls the underlying BAML function "PromptTestClaudeChatNoSystem" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestClaudeChatNoSystem = async ( + input: string, +): Promise => { + return b.PromptTestClaudeChatNoSystem( + input, + ); +}; + +/** + * Executes the "PromptTestOpenAI" BAML action. + * + * This server action calls the underlying BAML function "PromptTestOpenAI" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestOpenAI = async ( + input: string, +): Promise => { + return b.PromptTestOpenAI( + input, + ); +}; + +/** + * Executes the "PromptTestOpenAIChat" BAML action. + * + * This server action calls the underlying BAML function "PromptTestOpenAIChat" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestOpenAIChat = async ( + input: string, +): Promise => { + return b.PromptTestOpenAIChat( + input, + ); +}; + +/** + * Executes the "PromptTestOpenAIChatNoSystem" BAML action. + * + * This server action calls the underlying BAML function "PromptTestOpenAIChatNoSystem" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestOpenAIChatNoSystem = async ( + input: string, +): Promise => { + return b.PromptTestOpenAIChatNoSystem( + input, + ); +}; + +/** + * Executes the "PromptTestStreaming" BAML action. + * + * This server action calls the underlying BAML function "PromptTestStreaming" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const PromptTestStreaming = async ( + input: string, +): Promise => { + return b.PromptTestStreaming( + input, + ); +}; + +/** + * Executes the "RecursiveAliasCycle" BAML action. + * + * This server action calls the underlying BAML function "RecursiveAliasCycle" + * with the specified parameters. + * + * @param { RecAliasOne } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const RecursiveAliasCycle = async ( + input: RecAliasOne, +): Promise => { + return b.RecursiveAliasCycle( + input, + ); +}; + +/** + * Executes the "RecursiveClassWithAliasIndirection" BAML action. + * + * This server action calls the underlying BAML function "RecursiveClassWithAliasIndirection" + * with the specified parameters. + * + * @param { NodeWithAliasIndirection } cls - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const RecursiveClassWithAliasIndirection = async ( + cls: NodeWithAliasIndirection, +): Promise => { + return b.RecursiveClassWithAliasIndirection( + cls, + ); +}; + +/** + * Executes the "ReturnAliasWithMergedAttributes" BAML action. + * + * This server action calls the underlying BAML function "ReturnAliasWithMergedAttributes" + * with the specified parameters. + * + * @param { Checked } money - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const ReturnAliasWithMergedAttributes = async ( + money: Checked, +): Promise> => { + return b.ReturnAliasWithMergedAttributes( + money, + ); +}; + +/** + * Executes the "ReturnFailingAssert" BAML action. + * + * This server action calls the underlying BAML function "ReturnFailingAssert" + * with the specified parameters. + * + * @param { number } inp - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ReturnFailingAssert = async ( + inp: number, +): Promise => { + return b.ReturnFailingAssert( + inp, + ); +}; + +/** + * Executes the "ReturnMalformedConstraints" BAML action. + * + * This server action calls the underlying BAML function "ReturnMalformedConstraints" + * with the specified parameters. + * + * @param { number } a - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const ReturnMalformedConstraints = async ( + a: number, +): Promise => { + return b.ReturnMalformedConstraints( + a, + ); +}; + +/** + * Executes the "SchemaDescriptions" BAML action. + * + * This server action calls the underlying BAML function "SchemaDescriptions" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const SchemaDescriptions = async ( + input: string, +): Promise => { + return b.SchemaDescriptions( + input, + ); +}; + +/** + * Executes the "SimpleRecursiveListAlias" BAML action. + * + * This server action calls the underlying BAML function "SimpleRecursiveListAlias" + * with the specified parameters. + * + * @param { RecursiveListAlias } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const SimpleRecursiveListAlias = async ( + input: RecursiveListAlias, +): Promise => { + return b.SimpleRecursiveListAlias( + input, + ); +}; + +/** + * Executes the "SimpleRecursiveMapAlias" BAML action. + * + * This server action calls the underlying BAML function "SimpleRecursiveMapAlias" + * with the specified parameters. + * + * @param { RecursiveMapAlias } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const SimpleRecursiveMapAlias = async ( + input: RecursiveMapAlias, +): Promise => { + return b.SimpleRecursiveMapAlias( + input, + ); +}; + +/** + * Executes the "StreamBigNumbers" BAML action. + * + * This server action calls the underlying BAML function "StreamBigNumbers" + * with the specified parameters. + * + * @param { number } digits - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const StreamBigNumbers = async ( + digits: number, +): Promise => { + return b.StreamBigNumbers( + digits, + ); +}; + +/** + * Executes the "StreamFailingAssertion" BAML action. + * + * This server action calls the underlying BAML function "StreamFailingAssertion" + * with the specified parameters. + * + * @param { string } theme - Input parameter. + * @param { number } length - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const StreamFailingAssertion = async ( + theme: string, + length: number, +): Promise => { + return b.StreamFailingAssertion( + theme, + length, + ); +}; + +/** + * Executes the "StreamOneBigNumber" BAML action. + * + * This server action calls the underlying BAML function "StreamOneBigNumber" + * with the specified parameters. + * + * @param { number } digits - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const StreamOneBigNumber = async ( + digits: number, +): Promise => { + return b.StreamOneBigNumber( + digits, + ); +}; + +/** + * Executes the "StreamUnionIntegers" BAML action. + * + * This server action calls the underlying BAML function "StreamUnionIntegers" + * with the specified parameters. + * + * @param { number } digits - Input parameter. + * + * @returns {Promise<(number | string)[]>} A promise that resolves with the result of the action. + */ +export const StreamUnionIntegers = async ( + digits: number, +): Promise<(number | string)[]> => { + return b.StreamUnionIntegers( + digits, + ); +}; + +/** + * Executes the "StreamingCompoundNumbers" BAML action. + * + * This server action calls the underlying BAML function "StreamingCompoundNumbers" + * with the specified parameters. + * + * @param { number } digits - Input parameter. + * @param { boolean } yapping - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const StreamingCompoundNumbers = async ( + digits: number, + yapping: boolean, +): Promise => { + return b.StreamingCompoundNumbers( + digits, + yapping, + ); +}; + +/** + * Executes the "TakeRecAliasDep" BAML action. + * + * This server action calls the underlying BAML function "TakeRecAliasDep" + * with the specified parameters. + * + * @param { RecursiveAliasDependency } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TakeRecAliasDep = async ( + input: RecursiveAliasDependency, +): Promise => { + return b.TakeRecAliasDep( + input, + ); +}; + +/** + * Executes the "TestAnthropic" BAML action. + * + * This server action calls the underlying BAML function "TestAnthropic" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAnthropic = async ( + input: string, +): Promise => { + return b.TestAnthropic( + input, + ); +}; + +/** + * Executes the "TestAnthropicShorthand" BAML action. + * + * This server action calls the underlying BAML function "TestAnthropicShorthand" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAnthropicShorthand = async ( + input: string, +): Promise => { + return b.TestAnthropicShorthand( + input, + ); +}; + +/** + * Executes the "TestAws" BAML action. + * + * This server action calls the underlying BAML function "TestAws" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAws = async ( + input: string, +): Promise => { + return b.TestAws( + input, + ); +}; + +/** + * Executes the "TestAwsInvalidAccessKey" BAML action. + * + * This server action calls the underlying BAML function "TestAwsInvalidAccessKey" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAwsInvalidAccessKey = async ( + input: string, +): Promise => { + return b.TestAwsInvalidAccessKey( + input, + ); +}; + +/** + * Executes the "TestAwsInvalidProfile" BAML action. + * + * This server action calls the underlying BAML function "TestAwsInvalidProfile" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAwsInvalidProfile = async ( + input: string, +): Promise => { + return b.TestAwsInvalidProfile( + input, + ); +}; + +/** + * Executes the "TestAwsInvalidRegion" BAML action. + * + * This server action calls the underlying BAML function "TestAwsInvalidRegion" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAwsInvalidRegion = async ( + input: string, +): Promise => { + return b.TestAwsInvalidRegion( + input, + ); +}; + +/** + * Executes the "TestAwsInvalidSessionToken" BAML action. + * + * This server action calls the underlying BAML function "TestAwsInvalidSessionToken" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAwsInvalidSessionToken = async ( + input: string, +): Promise => { + return b.TestAwsInvalidSessionToken( + input, + ); +}; + +/** + * Executes the "TestAzure" BAML action. + * + * This server action calls the underlying BAML function "TestAzure" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzure = async ( + input: string, +): Promise => { + return b.TestAzure( + input, + ); +}; + +/** + * Executes the "TestAzureFailure" BAML action. + * + * This server action calls the underlying BAML function "TestAzureFailure" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzureFailure = async ( + input: string, +): Promise => { + return b.TestAzureFailure( + input, + ); +}; + +/** + * Executes the "TestAzureO1NoMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestAzureO1NoMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzureO1NoMaxTokens = async ( + input: string, +): Promise => { + return b.TestAzureO1NoMaxTokens( + input, + ); +}; + +/** + * Executes the "TestAzureO1WithMaxCompletionTokens" BAML action. + * + * This server action calls the underlying BAML function "TestAzureO1WithMaxCompletionTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzureO1WithMaxCompletionTokens = async ( + input: string, +): Promise => { + return b.TestAzureO1WithMaxCompletionTokens( + input, + ); +}; + +/** + * Executes the "TestAzureO1WithMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestAzureO1WithMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzureO1WithMaxTokens = async ( + input: string, +): Promise => { + return b.TestAzureO1WithMaxTokens( + input, + ); +}; + +/** + * Executes the "TestAzureWithMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestAzureWithMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestAzureWithMaxTokens = async ( + input: string, +): Promise => { + return b.TestAzureWithMaxTokens( + input, + ); +}; + +/** + * Executes the "TestCaching" BAML action. + * + * This server action calls the underlying BAML function "TestCaching" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * @param { string } not_cached - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestCaching = async ( + input: string, + not_cached: string, +): Promise => { + return b.TestCaching( + input, + not_cached, + ); +}; + +/** + * Executes the "TestFallbackClient" BAML action. + * + * This server action calls the underlying BAML function "TestFallbackClient" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFallbackClient = async ( +): Promise => { + return b.TestFallbackClient( + ); +}; + +/** + * Executes the "TestFallbackToShorthand" BAML action. + * + * This server action calls the underlying BAML function "TestFallbackToShorthand" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFallbackToShorthand = async ( + input: string, +): Promise => { + return b.TestFallbackToShorthand( + input, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleBool" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleBool" + * with the specified parameters. + * + * @param { boolean } myBool - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleBool = async ( + myBool: boolean, +): Promise => { + return b.TestFnNamedArgsSingleBool( + myBool, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleClass" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleClass" + * with the specified parameters. + * + * @param { NamedArgsSingleClass } myArg - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleClass = async ( + myArg: NamedArgsSingleClass, +): Promise => { + return b.TestFnNamedArgsSingleClass( + myArg, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleEnumList" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleEnumList" + * with the specified parameters. + * + * @param { NamedArgsSingleEnumList[] } myArg - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleEnumList = async ( + myArg: NamedArgsSingleEnumList[], +): Promise => { + return b.TestFnNamedArgsSingleEnumList( + myArg, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleFloat" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleFloat" + * with the specified parameters. + * + * @param { number } myFloat - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleFloat = async ( + myFloat: number, +): Promise => { + return b.TestFnNamedArgsSingleFloat( + myFloat, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleInt" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleInt" + * with the specified parameters. + * + * @param { number } myInt - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleInt = async ( + myInt: number, +): Promise => { + return b.TestFnNamedArgsSingleInt( + myInt, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleMapStringToClass" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleMapStringToClass" + * with the specified parameters. + * + * @param { Record } myMap - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleMapStringToClass = async ( + myMap: Record, +): Promise> => { + return b.TestFnNamedArgsSingleMapStringToClass( + myMap, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleMapStringToMap" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleMapStringToMap" + * with the specified parameters. + * + * @param { Record> } myMap - Input parameter. + * + * @returns {Promise>>} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleMapStringToMap = async ( + myMap: Record>, +): Promise>> => { + return b.TestFnNamedArgsSingleMapStringToMap( + myMap, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleMapStringToString" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleMapStringToString" + * with the specified parameters. + * + * @param { Record } myMap - Input parameter. + * + * @returns {Promise>} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleMapStringToString = async ( + myMap: Record, +): Promise> => { + return b.TestFnNamedArgsSingleMapStringToString( + myMap, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleString" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleString" + * with the specified parameters. + * + * @param { string } myString - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleString = async ( + myString: string, +): Promise => { + return b.TestFnNamedArgsSingleString( + myString, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleStringArray" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleStringArray" + * with the specified parameters. + * + * @param { string[] } myStringArray - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleStringArray = async ( + myStringArray: string[], +): Promise => { + return b.TestFnNamedArgsSingleStringArray( + myStringArray, + ); +}; + +/** + * Executes the "TestFnNamedArgsSingleStringList" BAML action. + * + * This server action calls the underlying BAML function "TestFnNamedArgsSingleStringList" + * with the specified parameters. + * + * @param { string[] } myArg - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestFnNamedArgsSingleStringList = async ( + myArg: string[], +): Promise => { + return b.TestFnNamedArgsSingleStringList( + myArg, + ); +}; + +/** + * Executes the "TestGemini" BAML action. + * + * This server action calls the underlying BAML function "TestGemini" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestGemini = async ( + input: string, +): Promise => { + return b.TestGemini( + input, + ); +}; + +/** + * Executes the "TestGeminiOpenAiGeneric" BAML action. + * + * This server action calls the underlying BAML function "TestGeminiOpenAiGeneric" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestGeminiOpenAiGeneric = async ( +): Promise => { + return b.TestGeminiOpenAiGeneric( + ); +}; + +/** + * Executes the "TestGeminiSystem" BAML action. + * + * This server action calls the underlying BAML function "TestGeminiSystem" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestGeminiSystem = async ( + input: string, +): Promise => { + return b.TestGeminiSystem( + input, + ); +}; + +/** + * Executes the "TestGeminiSystemAsChat" BAML action. + * + * This server action calls the underlying BAML function "TestGeminiSystemAsChat" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestGeminiSystemAsChat = async ( + input: string, +): Promise => { + return b.TestGeminiSystemAsChat( + input, + ); +}; + +/** + * Executes the "TestImageInput" BAML action. + * + * This server action calls the underlying BAML function "TestImageInput" + * with the specified parameters. + * + * @param { Image } img - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestImageInput = async ( + img: Image, +): Promise => { + return b.TestImageInput( + img, + ); +}; + +/** + * Executes the "TestImageInputAnthropic" BAML action. + * + * This server action calls the underlying BAML function "TestImageInputAnthropic" + * with the specified parameters. + * + * @param { Image } img - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestImageInputAnthropic = async ( + img: Image, +): Promise => { + return b.TestImageInputAnthropic( + img, + ); +}; + +/** + * Executes the "TestImageListInput" BAML action. + * + * This server action calls the underlying BAML function "TestImageListInput" + * with the specified parameters. + * + * @param { Image[] } imgs - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestImageListInput = async ( + imgs: Image[], +): Promise => { + return b.TestImageListInput( + imgs, + ); +}; + +/** + * Executes the "TestMemory" BAML action. + * + * This server action calls the underlying BAML function "TestMemory" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestMemory = async ( + input: string, +): Promise => { + return b.TestMemory( + input, + ); +}; + +/** + * Executes the "TestMulticlassNamedArgs" BAML action. + * + * This server action calls the underlying BAML function "TestMulticlassNamedArgs" + * with the specified parameters. + * + * @param { NamedArgsSingleClass } myArg - Input parameter. + * @param { NamedArgsSingleClass } myArg2 - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestMulticlassNamedArgs = async ( + myArg: NamedArgsSingleClass, + myArg2: NamedArgsSingleClass, +): Promise => { + return b.TestMulticlassNamedArgs( + myArg, + myArg2, + ); +}; + +/** + * Executes the "TestNamedArgsLiteralBool" BAML action. + * + * This server action calls the underlying BAML function "TestNamedArgsLiteralBool" + * with the specified parameters. + * + * @param { true } myBool - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestNamedArgsLiteralBool = async ( + myBool: true, +): Promise => { + return b.TestNamedArgsLiteralBool( + myBool, + ); +}; + +/** + * Executes the "TestNamedArgsLiteralInt" BAML action. + * + * This server action calls the underlying BAML function "TestNamedArgsLiteralInt" + * with the specified parameters. + * + * @param { 1 } myInt - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestNamedArgsLiteralInt = async ( + myInt: 1, +): Promise => { + return b.TestNamedArgsLiteralInt( + myInt, + ); +}; + +/** + * Executes the "TestNamedArgsLiteralString" BAML action. + * + * This server action calls the underlying BAML function "TestNamedArgsLiteralString" + * with the specified parameters. + * + * @param { "My String" } myString - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestNamedArgsLiteralString = async ( + myString: "My String", +): Promise => { + return b.TestNamedArgsLiteralString( + myString, + ); +}; + +/** + * Executes the "TestOllama" BAML action. + * + * This server action calls the underlying BAML function "TestOllama" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOllama = async ( + input: string, +): Promise => { + return b.TestOllama( + input, + ); +}; + +/** + * Executes the "TestOpenAI" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAI" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAI = async ( + input: string, +): Promise => { + return b.TestOpenAI( + input, + ); +}; + +/** + * Executes the "TestOpenAILegacyProvider" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAILegacyProvider" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAILegacyProvider = async ( + input: string, +): Promise => { + return b.TestOpenAILegacyProvider( + input, + ); +}; + +/** + * Executes the "TestOpenAIO1NoMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIO1NoMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIO1NoMaxTokens = async ( + input: string, +): Promise => { + return b.TestOpenAIO1NoMaxTokens( + input, + ); +}; + +/** + * Executes the "TestOpenAIO1WithMaxCompletionTokens" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIO1WithMaxCompletionTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIO1WithMaxCompletionTokens = async ( + input: string, +): Promise => { + return b.TestOpenAIO1WithMaxCompletionTokens( + input, + ); +}; + +/** + * Executes the "TestOpenAIO1WithMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIO1WithMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIO1WithMaxTokens = async ( + input: string, +): Promise => { + return b.TestOpenAIO1WithMaxTokens( + input, + ); +}; + +/** + * Executes the "TestOpenAIShorthand" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIShorthand" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIShorthand = async ( + input: string, +): Promise => { + return b.TestOpenAIShorthand( + input, + ); +}; + +/** + * Executes the "TestOpenAIWithMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIWithMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIWithMaxTokens = async ( + input: string, +): Promise => { + return b.TestOpenAIWithMaxTokens( + input, + ); +}; + +/** + * Executes the "TestOpenAIWithNullMaxTokens" BAML action. + * + * This server action calls the underlying BAML function "TestOpenAIWithNullMaxTokens" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestOpenAIWithNullMaxTokens = async ( + input: string, +): Promise => { + return b.TestOpenAIWithNullMaxTokens( + input, + ); +}; + +/** + * Executes the "TestRetryConstant" BAML action. + * + * This server action calls the underlying BAML function "TestRetryConstant" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestRetryConstant = async ( +): Promise => { + return b.TestRetryConstant( + ); +}; + +/** + * Executes the "TestRetryExponential" BAML action. + * + * This server action calls the underlying BAML function "TestRetryExponential" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestRetryExponential = async ( +): Promise => { + return b.TestRetryExponential( + ); +}; + +/** + * Executes the "TestSingleFallbackClient" BAML action. + * + * This server action calls the underlying BAML function "TestSingleFallbackClient" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestSingleFallbackClient = async ( +): Promise => { + return b.TestSingleFallbackClient( + ); +}; + +/** + * Executes the "TestUniverseQuestion" BAML action. + * + * This server action calls the underlying BAML function "TestUniverseQuestion" + * with the specified parameters. + * + * @param { UniverseQuestionInput } question - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestUniverseQuestion = async ( + question: UniverseQuestionInput, +): Promise => { + return b.TestUniverseQuestion( + question, + ); +}; + +/** + * Executes the "TestVertex" BAML action. + * + * This server action calls the underlying BAML function "TestVertex" + * with the specified parameters. + * + * @param { string } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestVertex = async ( + input: string, +): Promise => { + return b.TestVertex( + input, + ); +}; + +/** + * Executes the "TestVertexWithSystemInstructions" BAML action. + * + * This server action calls the underlying BAML function "TestVertexWithSystemInstructions" + * with the specified parameters. + * + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const TestVertexWithSystemInstructions = async ( +): Promise => { + return b.TestVertexWithSystemInstructions( + ); +}; + +/** + * Executes the "UnionTest_Function" BAML action. + * + * This server action calls the underlying BAML function "UnionTest_Function" + * with the specified parameters. + * + * @param { string | boolean } input - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const UnionTest_Function = async ( + input: string | boolean, +): Promise => { + return b.UnionTest_Function( + input, + ); +}; + +/** + * Executes the "UseBlockConstraint" BAML action. + * + * This server action calls the underlying BAML function "UseBlockConstraint" + * with the specified parameters. + * + * @param { BlockConstraintForParam } inp - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const UseBlockConstraint = async ( + inp: BlockConstraintForParam, +): Promise => { + return b.UseBlockConstraint( + inp, + ); +}; + +/** + * Executes the "UseMalformedConstraints" BAML action. + * + * This server action calls the underlying BAML function "UseMalformedConstraints" + * with the specified parameters. + * + * @param { MalformedConstraints2 } a - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const UseMalformedConstraints = async ( + a: MalformedConstraints2, +): Promise => { + return b.UseMalformedConstraints( + a, + ); +}; + +/** + * Executes the "UseNestedBlockConstraint" BAML action. + * + * This server action calls the underlying BAML function "UseNestedBlockConstraint" + * with the specified parameters. + * + * @param { NestedBlockConstraintForParam } inp - Input parameter. + * + * @returns {Promise} A promise that resolves with the result of the action. + */ +export const UseNestedBlockConstraint = async ( + inp: NestedBlockConstraintForParam, +): Promise => { + return b.UseNestedBlockConstraint( + inp, + ); +}; \ No newline at end of file diff --git a/integ-tests/react/baml_client/react/server_streaming.ts b/integ-tests/react/baml_client/react/server_streaming.ts new file mode 100644 index 000000000..62b452674 --- /dev/null +++ b/integ-tests/react/baml_client/react/server_streaming.ts @@ -0,0 +1,3000 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +'use server' + +import { b } from '../index'; +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { AnotherObject, BigNumbers, BinaryNode, Blah, BlockConstraint, BlockConstraintForParam, BookOrder, ClassForNullLiteral, ClassOptionalOutput, ClassOptionalOutput2, ClassToRecAlias, ClassWithBlockDone, ClassWithImage, ClassWithoutDone, ComplexMemoryObject, CompoundBigNumbers, ContactInfo, CustomTaskResult, DummyOutput, DynInputOutput, DynamicClassOne, DynamicClassTwo, DynamicOutput, Earthling, Education, Email, EmailAddress, Event, FakeImage, FlightConfirmation, FooAny, Forest, FormatterTest0, FormatterTest1, FormatterTest2, FormatterTest3, GroceryReceipt, InnerClass, InnerClass2, InputClass, InputClassNested, LinkedList, LinkedListAliasNode, LiteralClassHello, LiteralClassOne, LiteralClassTwo, MalformedConstraints, MalformedConstraints2, Martian, MemoryObject, MergeAttrs, NamedArgsSingleClass, Nested, Nested2, NestedBlockConstraint, NestedBlockConstraintForParam, Node, NodeWithAliasIndirection, OptionalListAndMap, OptionalTest_Prop1, OptionalTest_ReturnType, OrderInfo, OriginalA, OriginalB, Person, PhoneNumber, Quantity, RaysData, ReceiptInfo, ReceiptItem, Recipe, RecursiveAliasDependency, Resume, Schema, SearchParams, SemanticContainer, SmallThing, SomeClassNestedDynamic, StringToClassEntry, TestClassAlias, TestClassNested, TestClassWithEnum, TestMemoryOutput, TestOutputClass, Tree, TwoStoriesOneTitle, UnionTest_ReturnType, UniverseQuestion, UniverseQuestionInput, WithReasoning, AliasedEnum, Category, Category2, Category3, Color, DataType, DynEnumOne, DynEnumTwo, EnumInClass, EnumOutput, Hobby, MapKey, NamedArgsSingleEnum, NamedArgsSingleEnumList, OptionalTest_CategoryType, OrderStatus, Tag, TestEnum, RecursiveMapAlias, RecursiveListAlias, RecAliasOne, RecAliasTwo, RecAliasThree, JsonValue, JsonObject, JsonArray } from "../types" + +import type * as types from "../types" + +/** + * Streaming BAML server actions that return ReadableStreams. + */ + +/** + * Executes the streaming variant of the "AaaSamOutputFormat" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } recipe - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AaaSamOutputFormat = async ( + recipe: string, +): Promise> => { + const stream = b.stream.AaaSamOutputFormat( + recipe, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasThatPointsToRecursiveType" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { LinkedListAliasNode } list - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasThatPointsToRecursiveType = async ( + list: LinkedListAliasNode, +): Promise> => { + const stream = b.stream.AliasThatPointsToRecursiveType( + list, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasWithMultipleAttrs" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Checked } money - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasWithMultipleAttrs = async ( + money: Checked, +): Promise> => { + const stream = b.stream.AliasWithMultipleAttrs( + money, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasedInputClass" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { InputClass } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasedInputClass = async ( + input: InputClass, +): Promise> => { + const stream = b.stream.AliasedInputClass( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasedInputClass2" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { InputClass } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasedInputClass2 = async ( + input: InputClass, +): Promise> => { + const stream = b.stream.AliasedInputClass2( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasedInputClassNested" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { InputClassNested } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasedInputClassNested = async ( + input: InputClassNested, +): Promise> => { + const stream = b.stream.AliasedInputClassNested( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasedInputEnum" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { AliasedEnum } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasedInputEnum = async ( + input: AliasedEnum, +): Promise> => { + const stream = b.stream.AliasedInputEnum( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AliasedInputList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { AliasedEnum[] } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AliasedInputList = async ( + input: AliasedEnum[], +): Promise> => { + const stream = b.stream.AliasedInputList( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AllowedOptionals" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { OptionalListAndMap } optionals - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AllowedOptionals = async ( + optionals: OptionalListAndMap, +): Promise> => { + const stream = b.stream.AllowedOptionals( + optionals, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AssertFn" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } a - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AssertFn = async ( + a: number, +): Promise> => { + const stream = b.stream.AssertFn( + a, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "AudioInput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Audio } aud - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const AudioInput = async ( + aud: Audio, +): Promise> => { + const stream = b.stream.AudioInput( + aud, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "BuildLinkedList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number[] } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const BuildLinkedList = async ( + input: number[], +): Promise> => { + const stream = b.stream.BuildLinkedList( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "BuildTree" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { BinaryNode } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const BuildTree = async ( + input: BinaryNode, +): Promise> => { + const stream = b.stream.BuildTree( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ClassThatPointsToRecursiveClassThroughAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { ClassToRecAlias } cls - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ClassThatPointsToRecursiveClassThroughAlias = async ( + cls: ClassToRecAlias, +): Promise> => { + const stream = b.stream.ClassThatPointsToRecursiveClassThroughAlias( + cls, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ClassifyDynEnumTwo" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ClassifyDynEnumTwo = async ( + input: string, +): Promise> => { + const stream = b.stream.ClassifyDynEnumTwo( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ClassifyMessage" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ClassifyMessage = async ( + input: string, +): Promise> => { + const stream = b.stream.ClassifyMessage( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ClassifyMessage2" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ClassifyMessage2 = async ( + input: string, +): Promise> => { + const stream = b.stream.ClassifyMessage2( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ClassifyMessage3" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ClassifyMessage3 = async ( + input: string, +): Promise> => { + const stream = b.stream.ClassifyMessage3( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "Completion" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } prefix - Input parameter. + * @param { string } suffix - Input parameter. + * @param { string } language - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const Completion = async ( + prefix: string, + suffix: string, + language: string, +): Promise> => { + const stream = b.stream.Completion( + prefix, + suffix, + language, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "CustomTask" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const CustomTask = async ( + input: string, +): Promise> => { + const stream = b.stream.CustomTask( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DescribeImage" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Image } img - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DescribeImage = async ( + img: Image, +): Promise> => { + const stream = b.stream.DescribeImage( + img, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DescribeImage2" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DescribeImage2 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise> => { + const stream = b.stream.DescribeImage2( + classWithImage, + img2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DescribeImage3" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DescribeImage3 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise> => { + const stream = b.stream.DescribeImage3( + classWithImage, + img2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DescribeImage4" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { ClassWithImage } classWithImage - Input parameter. + * @param { Image } img2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DescribeImage4 = async ( + classWithImage: ClassWithImage, + img2: Image, +): Promise> => { + const stream = b.stream.DescribeImage4( + classWithImage, + img2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DifferentiateUnions" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DifferentiateUnions = async ( +): Promise> => { + const stream = b.stream.DifferentiateUnions( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DummyOutputFunction" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DummyOutputFunction = async ( + input: string, +): Promise> => { + const stream = b.stream.DummyOutputFunction( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DynamicFunc" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { DynamicClassOne } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DynamicFunc = async ( + input: DynamicClassOne, +): Promise> => { + const stream = b.stream.DynamicFunc( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DynamicInputOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { DynInputOutput } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DynamicInputOutput = async ( + input: DynInputOutput, +): Promise> => { + const stream = b.stream.DynamicInputOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "DynamicListInputOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { DynInputOutput[] } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const DynamicListInputOutput = async ( + input: DynInputOutput[], +): Promise> => { + const stream = b.stream.DynamicListInputOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExpectFailure" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExpectFailure = async ( +): Promise> => { + const stream = b.stream.ExpectFailure( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractContactInfo" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } document - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractContactInfo = async ( + document: string, +): Promise> => { + const stream = b.stream.ExtractContactInfo( + document, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractHobby" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } text - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractHobby = async ( + text: string, +): Promise> => { + const stream = b.stream.ExtractHobby( + text, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractNames" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractNames = async ( + input: string, +): Promise> => { + const stream = b.stream.ExtractNames( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractPeople" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } text - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractPeople = async ( + text: string, +): Promise> => { + const stream = b.stream.ExtractPeople( + text, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractReceiptInfo" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } email - Input parameter. + * @param { "curiosity" | "personal_finance" } reason - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractReceiptInfo = async ( + email: string, + reason: "curiosity" | "personal_finance", +): Promise> => { + const stream = b.stream.ExtractReceiptInfo( + email, + reason, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractResume" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } resume - Input parameter. + * @param { Image | null } img (optional) - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractResume = async ( + resume: string, + img?: Image | null, +): Promise> => { + const stream = b.stream.ExtractResume( + resume, + img, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ExtractResume2" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } resume - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ExtractResume2 = async ( + resume: string, +): Promise> => { + const stream = b.stream.ExtractResume2( + resume, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnClassOptionalOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnClassOptionalOutput = async ( + input: string, +): Promise> => { + const stream = b.stream.FnClassOptionalOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnClassOptionalOutput2" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnClassOptionalOutput2 = async ( + input: string, +): Promise> => { + const stream = b.stream.FnClassOptionalOutput2( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnEnumListOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnEnumListOutput = async ( + input: string, +): Promise> => { + const stream = b.stream.FnEnumListOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnEnumOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnEnumOutput = async ( + input: string, +): Promise> => { + const stream = b.stream.FnEnumOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnLiteralClassInputOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { LiteralClassHello } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnLiteralClassInputOutput = async ( + input: LiteralClassHello, +): Promise> => { + const stream = b.stream.FnLiteralClassInputOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnLiteralUnionClassInputOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { LiteralClassOne | LiteralClassTwo } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnLiteralUnionClassInputOutput = async ( + input: LiteralClassOne | LiteralClassTwo, +): Promise> => { + const stream = b.stream.FnLiteralUnionClassInputOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnNamedArgsSingleStringOptional" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string | null } myString (optional) - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnNamedArgsSingleStringOptional = async ( + myString?: string | null, +): Promise> => { + const stream = b.stream.FnNamedArgsSingleStringOptional( + myString, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputBool" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputBool = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputBool( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputClass" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputClass = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputClass( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputClassList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputClassList = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputClassList( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputClassNested" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputClassNested = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputClassNested( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputClassWithEnum" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputClassWithEnum = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputClassWithEnum( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputInt" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputInt = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputInt( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputLiteralBool" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputLiteralBool = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputLiteralBool( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputLiteralInt" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputLiteralInt = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputLiteralInt( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputLiteralString" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputLiteralString = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputLiteralString( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnOutputStringList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnOutputStringList = async ( + input: string, +): Promise> => { + const stream = b.stream.FnOutputStringList( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnTestAliasedEnumOutput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnTestAliasedEnumOutput = async ( + input: string, +): Promise> => { + const stream = b.stream.FnTestAliasedEnumOutput( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnTestClassAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnTestClassAlias = async ( + input: string, +): Promise> => { + const stream = b.stream.FnTestClassAlias( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "FnTestNamedArgsSingleEnum" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NamedArgsSingleEnum } myArg - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const FnTestNamedArgsSingleEnum = async ( + myArg: NamedArgsSingleEnum, +): Promise> => { + const stream = b.stream.FnTestNamedArgsSingleEnum( + myArg, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "GetDataType" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } text - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const GetDataType = async ( + text: string, +): Promise> => { + const stream = b.stream.GetDataType( + text, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "GetOrderInfo" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Email } email - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const GetOrderInfo = async ( + email: Email, +): Promise> => { + const stream = b.stream.GetOrderInfo( + email, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "GetQuery" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } query - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const GetQuery = async ( + query: string, +): Promise> => { + const stream = b.stream.GetQuery( + query, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "InOutEnumMapKey" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Partial> } i1 - Input parameter. + * @param { Partial> } i2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const InOutEnumMapKey = async ( + i1: Partial>, + i2: Partial>, +): Promise> => { + const stream = b.stream.InOutEnumMapKey( + i1, + i2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "InOutLiteralStringUnionMapKey" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Partial> } i1 - Input parameter. + * @param { Partial> } i2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const InOutLiteralStringUnionMapKey = async ( + i1: Partial>, + i2: Partial>, +): Promise> => { + const stream = b.stream.InOutLiteralStringUnionMapKey( + i1, + i2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "InOutSingleLiteralStringMapKey" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Partial> } m - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const InOutSingleLiteralStringMapKey = async ( + m: Partial>, +): Promise> => { + const stream = b.stream.InOutSingleLiteralStringMapKey( + m, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "JsonTypeAliasCycle" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { JsonValue } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const JsonTypeAliasCycle = async ( + input: JsonValue, +): Promise> => { + const stream = b.stream.JsonTypeAliasCycle( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "LiteralUnionsTest" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const LiteralUnionsTest = async ( + input: string, +): Promise> => { + const stream = b.stream.LiteralUnionsTest( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MakeBlockConstraint" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MakeBlockConstraint = async ( +): Promise> => { + const stream = b.stream.MakeBlockConstraint( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MakeNestedBlockConstraint" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MakeNestedBlockConstraint = async ( +): Promise> => { + const stream = b.stream.MakeNestedBlockConstraint( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MakeSemanticContainer" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MakeSemanticContainer = async ( +): Promise> => { + const stream = b.stream.MakeSemanticContainer( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MapAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Record } m - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MapAlias = async ( + m: Record, +): Promise> => { + const stream = b.stream.MapAlias( + m, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MergeAliasAttributes" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } money - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MergeAliasAttributes = async ( + money: number, +): Promise> => { + const stream = b.stream.MergeAliasAttributes( + money, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "MyFunc" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const MyFunc = async ( + input: string, +): Promise> => { + const stream = b.stream.MyFunc( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "NestedAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number | string | boolean | number | string[] | Record } c - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const NestedAlias = async ( + c: number | string | boolean | number | string[] | Record, +): Promise> => { + const stream = b.stream.NestedAlias( + c, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "NullLiteralClassHello" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } s - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const NullLiteralClassHello = async ( + s: string, +): Promise> => { + const stream = b.stream.NullLiteralClassHello( + s, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "OptionalTest_Function" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const OptionalTest_Function = async ( + input: string, +): Promise> => { + const stream = b.stream.OptionalTest_Function( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PredictAge" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } name - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PredictAge = async ( + name: string, +): Promise> => { + const stream = b.stream.PredictAge( + name, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PredictAgeBare" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } inp - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PredictAgeBare = async ( + inp: string, +): Promise> => { + const stream = b.stream.PredictAgeBare( + inp, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PrimitiveAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number | string | boolean | number } p - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PrimitiveAlias = async ( + p: number | string | boolean | number, +): Promise> => { + const stream = b.stream.PrimitiveAlias( + p, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestClaude" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestClaude = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestClaude( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestClaudeChat" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestClaudeChat = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestClaudeChat( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestClaudeChatNoSystem" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestClaudeChatNoSystem = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestClaudeChatNoSystem( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestOpenAI" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestOpenAI = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestOpenAI( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestOpenAIChat" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestOpenAIChat = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestOpenAIChat( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestOpenAIChatNoSystem" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestOpenAIChatNoSystem = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestOpenAIChatNoSystem( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "PromptTestStreaming" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const PromptTestStreaming = async ( + input: string, +): Promise> => { + const stream = b.stream.PromptTestStreaming( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "RecursiveAliasCycle" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { RecAliasOne } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const RecursiveAliasCycle = async ( + input: RecAliasOne, +): Promise> => { + const stream = b.stream.RecursiveAliasCycle( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "RecursiveClassWithAliasIndirection" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NodeWithAliasIndirection } cls - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const RecursiveClassWithAliasIndirection = async ( + cls: NodeWithAliasIndirection, +): Promise> => { + const stream = b.stream.RecursiveClassWithAliasIndirection( + cls, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ReturnAliasWithMergedAttributes" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Checked } money - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ReturnAliasWithMergedAttributes = async ( + money: Checked, +): Promise> => { + const stream = b.stream.ReturnAliasWithMergedAttributes( + money, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ReturnFailingAssert" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } inp - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ReturnFailingAssert = async ( + inp: number, +): Promise> => { + const stream = b.stream.ReturnFailingAssert( + inp, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "ReturnMalformedConstraints" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } a - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const ReturnMalformedConstraints = async ( + a: number, +): Promise> => { + const stream = b.stream.ReturnMalformedConstraints( + a, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "SchemaDescriptions" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const SchemaDescriptions = async ( + input: string, +): Promise> => { + const stream = b.stream.SchemaDescriptions( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "SimpleRecursiveListAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { RecursiveListAlias } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const SimpleRecursiveListAlias = async ( + input: RecursiveListAlias, +): Promise> => { + const stream = b.stream.SimpleRecursiveListAlias( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "SimpleRecursiveMapAlias" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { RecursiveMapAlias } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const SimpleRecursiveMapAlias = async ( + input: RecursiveMapAlias, +): Promise> => { + const stream = b.stream.SimpleRecursiveMapAlias( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "StreamBigNumbers" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } digits - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const StreamBigNumbers = async ( + digits: number, +): Promise> => { + const stream = b.stream.StreamBigNumbers( + digits, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "StreamFailingAssertion" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } theme - Input parameter. + * @param { number } length - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const StreamFailingAssertion = async ( + theme: string, + length: number, +): Promise> => { + const stream = b.stream.StreamFailingAssertion( + theme, + length, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "StreamOneBigNumber" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } digits - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const StreamOneBigNumber = async ( + digits: number, +): Promise> => { + const stream = b.stream.StreamOneBigNumber( + digits, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "StreamUnionIntegers" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } digits - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const StreamUnionIntegers = async ( + digits: number, +): Promise> => { + const stream = b.stream.StreamUnionIntegers( + digits, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "StreamingCompoundNumbers" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } digits - Input parameter. + * @param { boolean } yapping - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const StreamingCompoundNumbers = async ( + digits: number, + yapping: boolean, +): Promise> => { + const stream = b.stream.StreamingCompoundNumbers( + digits, + yapping, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TakeRecAliasDep" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { RecursiveAliasDependency } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TakeRecAliasDep = async ( + input: RecursiveAliasDependency, +): Promise> => { + const stream = b.stream.TakeRecAliasDep( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAnthropic" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAnthropic = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAnthropic( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAnthropicShorthand" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAnthropicShorthand = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAnthropicShorthand( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAws" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAws = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAws( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAwsInvalidAccessKey" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAwsInvalidAccessKey = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAwsInvalidAccessKey( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAwsInvalidProfile" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAwsInvalidProfile = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAwsInvalidProfile( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAwsInvalidRegion" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAwsInvalidRegion = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAwsInvalidRegion( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAwsInvalidSessionToken" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAwsInvalidSessionToken = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAwsInvalidSessionToken( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzure" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzure = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzure( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzureFailure" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzureFailure = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzureFailure( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzureO1NoMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzureO1NoMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzureO1NoMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzureO1WithMaxCompletionTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzureO1WithMaxCompletionTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzureO1WithMaxCompletionTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzureO1WithMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzureO1WithMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzureO1WithMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestAzureWithMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestAzureWithMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestAzureWithMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestCaching" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * @param { string } not_cached - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestCaching = async ( + input: string, + not_cached: string, +): Promise> => { + const stream = b.stream.TestCaching( + input, + not_cached, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFallbackClient" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFallbackClient = async ( +): Promise> => { + const stream = b.stream.TestFallbackClient( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFallbackToShorthand" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFallbackToShorthand = async ( + input: string, +): Promise> => { + const stream = b.stream.TestFallbackToShorthand( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleBool" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { boolean } myBool - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleBool = async ( + myBool: boolean, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleBool( + myBool, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleClass" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NamedArgsSingleClass } myArg - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleClass = async ( + myArg: NamedArgsSingleClass, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleClass( + myArg, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleEnumList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NamedArgsSingleEnumList[] } myArg - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleEnumList = async ( + myArg: NamedArgsSingleEnumList[], +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleEnumList( + myArg, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleFloat" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } myFloat - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleFloat = async ( + myFloat: number, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleFloat( + myFloat, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleInt" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { number } myInt - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleInt = async ( + myInt: number, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleInt( + myInt, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleMapStringToClass" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Record } myMap - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleMapStringToClass = async ( + myMap: Record, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleMapStringToClass( + myMap, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleMapStringToMap" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Record> } myMap - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleMapStringToMap = async ( + myMap: Record>, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleMapStringToMap( + myMap, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleMapStringToString" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Record } myMap - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleMapStringToString = async ( + myMap: Record, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleMapStringToString( + myMap, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleString" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } myString - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleString = async ( + myString: string, +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleString( + myString, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleStringArray" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string[] } myStringArray - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleStringArray = async ( + myStringArray: string[], +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleStringArray( + myStringArray, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestFnNamedArgsSingleStringList" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string[] } myArg - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestFnNamedArgsSingleStringList = async ( + myArg: string[], +): Promise> => { + const stream = b.stream.TestFnNamedArgsSingleStringList( + myArg, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestGemini" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestGemini = async ( + input: string, +): Promise> => { + const stream = b.stream.TestGemini( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestGeminiOpenAiGeneric" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestGeminiOpenAiGeneric = async ( +): Promise> => { + const stream = b.stream.TestGeminiOpenAiGeneric( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestGeminiSystem" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestGeminiSystem = async ( + input: string, +): Promise> => { + const stream = b.stream.TestGeminiSystem( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestGeminiSystemAsChat" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestGeminiSystemAsChat = async ( + input: string, +): Promise> => { + const stream = b.stream.TestGeminiSystemAsChat( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestImageInput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Image } img - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestImageInput = async ( + img: Image, +): Promise> => { + const stream = b.stream.TestImageInput( + img, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestImageInputAnthropic" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Image } img - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestImageInputAnthropic = async ( + img: Image, +): Promise> => { + const stream = b.stream.TestImageInputAnthropic( + img, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestImageListInput" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { Image[] } imgs - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestImageListInput = async ( + imgs: Image[], +): Promise> => { + const stream = b.stream.TestImageListInput( + imgs, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestMemory" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestMemory = async ( + input: string, +): Promise> => { + const stream = b.stream.TestMemory( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestMulticlassNamedArgs" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NamedArgsSingleClass } myArg - Input parameter. + * @param { NamedArgsSingleClass } myArg2 - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestMulticlassNamedArgs = async ( + myArg: NamedArgsSingleClass, + myArg2: NamedArgsSingleClass, +): Promise> => { + const stream = b.stream.TestMulticlassNamedArgs( + myArg, + myArg2, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestNamedArgsLiteralBool" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { true } myBool - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestNamedArgsLiteralBool = async ( + myBool: true, +): Promise> => { + const stream = b.stream.TestNamedArgsLiteralBool( + myBool, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestNamedArgsLiteralInt" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { 1 } myInt - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestNamedArgsLiteralInt = async ( + myInt: 1, +): Promise> => { + const stream = b.stream.TestNamedArgsLiteralInt( + myInt, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestNamedArgsLiteralString" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { "My String" } myString - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestNamedArgsLiteralString = async ( + myString: "My String", +): Promise> => { + const stream = b.stream.TestNamedArgsLiteralString( + myString, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOllama" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOllama = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOllama( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAI" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAI = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAI( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAILegacyProvider" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAILegacyProvider = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAILegacyProvider( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIO1NoMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIO1NoMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIO1NoMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIO1WithMaxCompletionTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIO1WithMaxCompletionTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIO1WithMaxCompletionTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIO1WithMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIO1WithMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIO1WithMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIShorthand" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIShorthand = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIShorthand( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIWithMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIWithMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIWithMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestOpenAIWithNullMaxTokens" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestOpenAIWithNullMaxTokens = async ( + input: string, +): Promise> => { + const stream = b.stream.TestOpenAIWithNullMaxTokens( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestRetryConstant" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestRetryConstant = async ( +): Promise> => { + const stream = b.stream.TestRetryConstant( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestRetryExponential" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestRetryExponential = async ( +): Promise> => { + const stream = b.stream.TestRetryExponential( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestSingleFallbackClient" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestSingleFallbackClient = async ( +): Promise> => { + const stream = b.stream.TestSingleFallbackClient( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestUniverseQuestion" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { UniverseQuestionInput } question - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestUniverseQuestion = async ( + question: UniverseQuestionInput, +): Promise> => { + const stream = b.stream.TestUniverseQuestion( + question, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestVertex" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestVertex = async ( + input: string, +): Promise> => { + const stream = b.stream.TestVertex( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "TestVertexWithSystemInstructions" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const TestVertexWithSystemInstructions = async ( +): Promise> => { + const stream = b.stream.TestVertexWithSystemInstructions( + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "UnionTest_Function" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { string | boolean } input - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const UnionTest_Function = async ( + input: string | boolean, +): Promise> => { + const stream = b.stream.UnionTest_Function( + input, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "UseBlockConstraint" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { BlockConstraintForParam } inp - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const UseBlockConstraint = async ( + inp: BlockConstraintForParam, +): Promise> => { + const stream = b.stream.UseBlockConstraint( + inp, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "UseMalformedConstraints" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { MalformedConstraints2 } a - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const UseMalformedConstraints = async ( + a: MalformedConstraints2, +): Promise> => { + const stream = b.stream.UseMalformedConstraints( + a, + ); + return Promise.resolve(stream.toStreamable()); +}; + +/** + * Executes the streaming variant of the "UseNestedBlockConstraint" BAML action. + * + * This action initiates a streaming response by calling the corresponding + * BAML stream function. The returned stream yields incremental updates. + * + * @param { NestedBlockConstraintForParam } inp - Input parameter. + * + * @returns {ReadableStream} A stream that yields incremental updates from the action. + */ +export const UseNestedBlockConstraint = async ( + inp: NestedBlockConstraintForParam, +): Promise> => { + const stream = b.stream.UseNestedBlockConstraint( + inp, + ); + return Promise.resolve(stream.toStreamable()); +}; \ No newline at end of file diff --git a/integ-tests/react/baml_client/react/server_streaming_types.ts b/integ-tests/react/baml_client/react/server_streaming_types.ts new file mode 100644 index 000000000..b2f60ce93 --- /dev/null +++ b/integ-tests/react/baml_client/react/server_streaming_types.ts @@ -0,0 +1,183 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import type { Check, Checked } from "../types"; +import type { Image, Audio } from "@boundaryml/baml"; + +import type { AnotherObject, BigNumbers, BinaryNode, Blah, BlockConstraint, BlockConstraintForParam, BookOrder, ClassForNullLiteral, ClassOptionalOutput, ClassOptionalOutput2, ClassToRecAlias, ClassWithBlockDone, ClassWithImage, ClassWithoutDone, ComplexMemoryObject, CompoundBigNumbers, ContactInfo, CustomTaskResult, DummyOutput, DynInputOutput, DynamicClassOne, DynamicClassTwo, DynamicOutput, Earthling, Education, Email, EmailAddress, Event, FakeImage, FlightConfirmation, FooAny, Forest, FormatterTest0, FormatterTest1, FormatterTest2, FormatterTest3, GroceryReceipt, InnerClass, InnerClass2, InputClass, InputClassNested, LinkedList, LinkedListAliasNode, LiteralClassHello, LiteralClassOne, LiteralClassTwo, MalformedConstraints, MalformedConstraints2, Martian, MemoryObject, MergeAttrs, NamedArgsSingleClass, Nested, Nested2, NestedBlockConstraint, NestedBlockConstraintForParam, Node, NodeWithAliasIndirection, OptionalListAndMap, OptionalTest_Prop1, OptionalTest_ReturnType, OrderInfo, OriginalA, OriginalB, Person, PhoneNumber, Quantity, RaysData, ReceiptInfo, ReceiptItem, Recipe, RecursiveAliasDependency, Resume, Schema, SearchParams, SemanticContainer, SmallThing, SomeClassNestedDynamic, StringToClassEntry, TestClassAlias, TestClassNested, TestClassWithEnum, TestMemoryOutput, TestOutputClass, Tree, TwoStoriesOneTitle, UnionTest_ReturnType, UniverseQuestion, UniverseQuestionInput, WithReasoning, AliasedEnum, Category, Category2, Category3, Color, DataType, DynEnumOne, DynEnumTwo, EnumInClass, EnumOutput, Hobby, MapKey, NamedArgsSingleEnum, NamedArgsSingleEnumList, OptionalTest_CategoryType, OrderStatus, Tag, TestEnum, RecursiveMapAlias, RecursiveListAlias, RecAliasOne, RecAliasTwo, RecAliasThree, JsonValue, JsonObject, JsonArray } from "../types" + +import type * as types from "../types" +import type { partial_types }from "../partial_types"; + +export type StreamingServerTypes = { + TestAwsInvalidProfile: string, + TestImageListInput: string, + RecursiveAliasCycle: RecAliasOne, + TestAzureWithMaxTokens: string, + TestOpenAIO1WithMaxTokens: string, + TestAzureFailure: string, + TestMulticlassNamedArgs: string, + FnTestNamedArgsSingleEnum: string, + TestUniverseQuestion: partial_types.UniverseQuestion, + FnEnumListOutput: (EnumOutput | null)[], + MyFunc: partial_types.DynamicOutput, + MakeSemanticContainer: partial_types.SemanticContainer, + TestOpenAIO1NoMaxTokens: string, + InOutSingleLiteralStringMapKey: (Record<"key", (string | null)> ), + TestRetryConstant: string, + FnOutputLiteralString: "example output", + ExtractResume2: partial_types.Resume, + FnOutputClassWithEnum: partial_types.TestClassWithEnum, + AliasedInputList: string, + ReturnFailingAssert: number, + TestAws: string, + TestAwsInvalidAccessKey: string, + FnOutputLiteralBool: false, + DescribeImage3: string, + AudioInput: string, + AliasedInputClass: string, + StreamUnionIntegers: ((number | null) | (string | null) | null)[], + TestFnNamedArgsSingleInt: string, + ExtractContactInfo: partial_types.ContactInfo, + TestOpenAIO1WithMaxCompletionTokens: string, + MergeAliasAttributes: partial_types.MergeAttrs, + Completion: string, + PromptTestOpenAIChat: string, + TestFnNamedArgsSingleMapStringToClass: (Record ), + TestOpenAIWithMaxTokens: string, + FnNamedArgsSingleStringOptional: string, + TestRetryExponential: string, + TestCaching: string, + ClassifyMessage2: types.Category, + FnLiteralUnionClassInputOutput: ((partial_types.LiteralClassOne | null) | (partial_types.LiteralClassTwo | null)), + FnClassOptionalOutput: ((partial_types.ClassOptionalOutput | null) | null), + PromptTestOpenAI: string, + SimpleRecursiveListAlias: RecursiveListAlias, + UseMalformedConstraints: number, + GetOrderInfo: partial_types.OrderInfo, + AllowedOptionals: partial_types.OptionalListAndMap, + FnOutputClassList: (partial_types.TestOutputClass | null)[], + TestOllama: string, + FnEnumOutput: types.EnumOutput, + TestVertex: string, + GetQuery: partial_types.SearchParams, + TestFnNamedArgsSingleStringArray: string, + PromptTestStreaming: string, + DifferentiateUnions: ((partial_types.OriginalA | null) | (partial_types.OriginalB | null)), + LiteralUnionsTest: (1 | true | "string output"), + UseNestedBlockConstraint: number, + FnOutputClassNested: partial_types.TestClassNested, + DynamicFunc: partial_types.DynamicClassTwo, + AliasedInputClassNested: string, + RecursiveClassWithAliasIndirection: partial_types.NodeWithAliasIndirection, + AliasedInputEnum: string, + ClassifyMessage3: types.Category, + PromptTestClaudeChatNoSystem: string, + TestNamedArgsLiteralInt: string, + FnOutputClass: partial_types.TestOutputClass, + AliasedInputClass2: string, + InOutEnumMapKey: (Record ), + SimpleRecursiveMapAlias: RecursiveMapAlias, + PredictAge: partial_types.FooAny, + NestedAlias: (((number | null) | (string | null) | (boolean | null) | (number | null) | null) | (string | null)[] | (Record | null)), + PromptTestOpenAIChatNoSystem: string, + TestSingleFallbackClient: string, + TestFallbackClient: string, + AaaSamOutputFormat: partial_types.Recipe, + ClassThatPointsToRecursiveClassThroughAlias: partial_types.ClassToRecAlias, + TestMemory: partial_types.TestMemoryOutput, + TestFnNamedArgsSingleBool: string, + OptionalTest_Function: ((partial_types.OptionalTest_ReturnType | null) | null)[], + TestNamedArgsLiteralString: string, + ExtractReceiptInfo: partial_types.ReceiptInfo, + TakeRecAliasDep: partial_types.RecursiveAliasDependency, + FnTestClassAlias: partial_types.TestClassAlias, + PrimitiveAlias: ((number | null) | (string | null) | (boolean | null) | (number | null)), + AliasThatPointsToRecursiveType: partial_types.LinkedListAliasNode, + ReturnMalformedConstraints: partial_types.MalformedConstraints, + TestFnNamedArgsSingleEnumList: string, + TestFnNamedArgsSingleClass: string, + MakeBlockConstraint: Checked, + UseBlockConstraint: number, + TestAzure: string, + TestFnNamedArgsSingleStringList: string, + BuildTree: partial_types.Tree, + FnClassOptionalOutput2: ((partial_types.ClassOptionalOutput2 | null) | null), + GetDataType: partial_types.RaysData, + TestOpenAIWithNullMaxTokens: string, + TestOpenAIShorthand: string, + JsonTypeAliasCycle: JsonValue, + ExtractResume: partial_types.Resume, + SchemaDescriptions: partial_types.Schema, + DynamicInputOutput: partial_types.DynInputOutput, + TestImageInputAnthropic: string, + TestAnthropicShorthand: string, + FnOutputStringList: (string | null)[], + DescribeImage: string, + StreamBigNumbers: partial_types.BigNumbers, + DynamicListInputOutput: (partial_types.DynInputOutput | null)[], + ExtractNames: (string | null)[], + TestAnthropic: string, + TestAzureO1WithMaxTokens: string, + TestFnNamedArgsSingleFloat: string, + TestGeminiOpenAiGeneric: string, + ClassifyDynEnumTwo: (string | DynEnumTwo), + FnTestAliasedEnumOutput: types.TestEnum, + TestImageInput: string, + ReturnAliasWithMergedAttributes: Checked, + MapAlias: (Record ), + TestGemini: string, + TestFnNamedArgsSingleMapStringToString: (Record ), + DescribeImage4: string, + TestOpenAI: string, + TestAzureO1NoMaxTokens: string, + FnLiteralClassInputOutput: partial_types.LiteralClassHello, + AssertFn: number, + InOutLiteralStringUnionMapKey: (Record<"one" | "two" | "three" | "four", (string | null)> ), + StreamOneBigNumber: number, + PredictAgeBare: Checked, + CustomTask: ((partial_types.BookOrder | null) | (partial_types.FlightConfirmation | null) | (partial_types.GroceryReceipt | null)), + ExpectFailure: string, + TestFnNamedArgsSingleString: string, + ExtractPeople: (partial_types.Person | null)[], + NullLiteralClassHello: partial_types.ClassForNullLiteral, + UnionTest_Function: partial_types.UnionTest_ReturnType, + TestNamedArgsLiteralBool: string, + TestAwsInvalidSessionToken: string, + AliasWithMultipleAttrs: Checked, + BuildLinkedList: partial_types.LinkedList, + PromptTestClaudeChat: string, + TestAzureO1WithMaxCompletionTokens: string, + MakeNestedBlockConstraint: partial_types.NestedBlockConstraint, + DummyOutputFunction: partial_types.DummyOutput, + FnOutputLiteralInt: 5, + FnOutputBool: boolean, + ExtractHobby: (string | Hobby | null)[], + TestFallbackToShorthand: string, + ClassifyMessage: types.Category, + TestGeminiSystem: string, + TestAwsInvalidRegion: string, + TestFnNamedArgsSingleMapStringToMap: (Record | null)> ), + FnOutputInt: number, + PromptTestClaude: string, + StreamingCompoundNumbers: partial_types.CompoundBigNumbers, + TestGeminiSystemAsChat: string, + TestOpenAILegacyProvider: string, + TestVertexWithSystemInstructions: string, + DescribeImage2: string, + StreamFailingAssertion: partial_types.TwoStoriesOneTitle, +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/react/types.ts b/integ-tests/react/baml_client/react/types.ts new file mode 100644 index 000000000..a3f8311cd --- /dev/null +++ b/integ-tests/react/baml_client/react/types.ts @@ -0,0 +1,209 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import type { BamlClientFinishReasonError, BamlValidationError } from '@boundaryml/baml/errors'; +import type * as Actions from './server' +import type { StreamingServerTypes }from './server_streaming_types' +/** + * Type representing all action keys except 'stream' and 'stream_types' + */ +export type ActionKey = keyof typeof Actions + +/** + * Type representing a BAML stream response. + * + * @template PartialType The type of the partial response. + * @template FinalType The type of the final response. + */ +export type BamlStreamResponse = { + partial?: PartialType + final?: FinalType + error?: Error | BamlValidationError | BamlClientFinishReasonError +} + +/** + * A server action that returns either a ReadableStream of Uint8Array or a final output. + */ +export type ServerAction = ( + ...args: Input extends any[] ? Input : [Input] +) => Promise | ReadableStream + +/** + * Helper type to derive the final return type for an action. + * + * If the action is a key of the Actions namespace, its final type is + * derived from (typeof Actions)[TActionKey]. Otherwise, if it is a raw action, + * the return type is derived directly. + * + * @template TActionKey The Actions namespace key + */ +export type FinalReturnType = (typeof Actions)[TActionKey] extends (...args: any) => any + ? Awaited> + : never + +/** + * Helper type to derive the partial return type for an action. + * + * If the action is a key of the Actions namespace, its partial type is + * obtained from the corresponding mapping in StreamingServerTypes. + * Otherwise, it defaults to never. + * + * @template TActionKey The Actions namespace key + */ + export type PartialReturnType = StreamingServerTypes[TActionKey] + +/** + * Props for streaming mode. + * + * If TActionKey is a key of Actions then the partial and final types are looked up + * from StreamingServerTypes and ActionKey respectively. + * Otherwise, they are inferred directly from the provided function type. + * + * @template TActionKey The Actions namespace key + */ +export type StreamingProps< + TActionKey extends ActionKey = ActionKey +> = { + stream: true + onPartial?: ( + response?: PartialReturnType, + ) => void + onFinal?: ( + response?: FinalReturnType, + ) => void + onError?: (error: Error | BamlValidationError | BamlClientFinishReasonError) => void +} + +/** + * Props for non‑streaming mode. + * + * @template TActionKey The Actions namespace key + */ +export type NonStreamingProps< + TActionKey extends ActionKey = ActionKey +> = { + stream?: false + onPartial?: never + onFinal?: ( + response?: FinalReturnType, + ) => void + onError?: (error: Error | BamlValidationError | BamlClientFinishReasonError) => void +} + +/** + * Union type of all possible hook props. + * + * @template TActionKey The Actions namespace key + */ +export type HookProps< + TActionKey extends ActionKey = ActionKey +> = + | StreamingProps + | NonStreamingProps + +/** + * Base return type for all BAML hooks. + * + * The final data type is derived from the non‑streaming action. + * + * @template TActionKey Either a key of the Actions namespace or a raw action type. + */ +export type BaseHookResult = { + /** + * The complete, final result of the operation. + */ + data?: FinalReturnType + /** + * Error details if the operation failed. + */ + error?: Error | BamlValidationError | BamlClientFinishReasonError + /** + * True if the operation failed. + */ + isError: boolean + /** + * True while the operation is in progress. + */ + isPending: boolean + /** + * True if the operation completed successfully. + */ + isSuccess: boolean + /** + * The current phase of the operation. + */ + status: 'idle' | 'pending' | 'success' | 'error' +} + +/** + * Return type for streaming mode BAML hooks. + * + * @template TActionKey The Actions namespace key + */ +export type StreamingHookResult = + BaseHookResult & { + /** + * The most recent partial result from the stream. + */ + partialData?: PartialReturnType + /** + * Function to start the operation. + */ + mutate: (...input: Parameters<(typeof Actions)[TActionKey]>) => Promise> + } + +/** + * Return type for non‑streaming mode BAML hooks. + * + * @template TActionKey The Actions namespace key + */ +export type NonStreamingHookResult = + BaseHookResult & { + partialData?: never + mutate: ( + ...input: Parameters<(typeof Actions)[TActionKey]> + ) => Promise>> + } + +/** + * Conditional return type for BAML hooks based on the provided props. + * + * @template TActionKey The Actions namespace key + * @template Props The hook props. + */ +export type HookResult< + TActionKey extends ActionKey = ActionKey, + Props extends HookProps = HookProps, +> = Props extends { stream: true } ? StreamingHookResult : NonStreamingHookResult + +/** + * Helper type to extract the non‑null partial data type from a BAML hook result. + * + * @template TActionKey The Actions namespace key + */ +export type HookResultPartialData = NonNullable< + HookResult['partialData'] +> + +/** + * Helper type to extract the non‑null final data type from a BAML hook result. + * + * @template TActionKey The Actions namespace key + */ +export type HookResultData = NonNullable< + HookResult['data'] +> \ No newline at end of file diff --git a/integ-tests/react/baml_client/sync_client.ts b/integ-tests/react/baml_client/sync_client.ts new file mode 100644 index 000000000..ef121e9e7 --- /dev/null +++ b/integ-tests/react/baml_client/sync_client.ts @@ -0,0 +1,3951 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { BamlRuntime, FunctionResult, BamlCtxManager, BamlSyncStream, Image, ClientRegistry, createBamlValidationError, BamlValidationError } from "@boundaryml/baml" +import type { Checked, Check, RecursivePartialNull as MovedRecursivePartialNull } from "./types" +import type {AnotherObject, BigNumbers, BinaryNode, Blah, BlockConstraint, BlockConstraintForParam, BookOrder, ClassForNullLiteral, ClassOptionalOutput, ClassOptionalOutput2, ClassToRecAlias, ClassWithBlockDone, ClassWithImage, ClassWithoutDone, ComplexMemoryObject, CompoundBigNumbers, ContactInfo, CustomTaskResult, DummyOutput, DynInputOutput, DynamicClassOne, DynamicClassTwo, DynamicOutput, Earthling, Education, Email, EmailAddress, Event, FakeImage, FlightConfirmation, FooAny, Forest, FormatterTest0, FormatterTest1, FormatterTest2, FormatterTest3, GroceryReceipt, InnerClass, InnerClass2, InputClass, InputClassNested, LinkedList, LinkedListAliasNode, LiteralClassHello, LiteralClassOne, LiteralClassTwo, MalformedConstraints, MalformedConstraints2, Martian, MemoryObject, MergeAttrs, NamedArgsSingleClass, Nested, Nested2, NestedBlockConstraint, NestedBlockConstraintForParam, Node, NodeWithAliasIndirection, OptionalListAndMap, OptionalTest_Prop1, OptionalTest_ReturnType, OrderInfo, OriginalA, OriginalB, Person, PhoneNumber, Quantity, RaysData, ReceiptInfo, ReceiptItem, Recipe, RecursiveAliasDependency, Resume, Schema, SearchParams, SemanticContainer, SmallThing, SomeClassNestedDynamic, StringToClassEntry, TestClassAlias, TestClassNested, TestClassWithEnum, TestMemoryOutput, TestOutputClass, Tree, TwoStoriesOneTitle, UnionTest_ReturnType, UniverseQuestion, UniverseQuestionInput, WithReasoning, AliasedEnum, Category, Category2, Category3, Color, DataType, DynEnumOne, DynEnumTwo, EnumInClass, EnumOutput, Hobby, MapKey, NamedArgsSingleEnum, NamedArgsSingleEnumList, OptionalTest_CategoryType, OrderStatus, Tag, TestEnum, RecursiveMapAlias, RecursiveListAlias, RecAliasOne, RecAliasTwo, RecAliasThree, JsonValue, JsonObject, JsonArray} from "./types" +import TypeBuilder from "./type_builder" +import { DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME } from "./globals" + +/** + * @deprecated Use RecursivePartialNull from 'baml_client/types' instead. + * Example: + * ```ts + * import { RecursivePartialNull } from './baml_client/types' + * ``` + */ +export type RecursivePartialNull = MovedRecursivePartialNull; + +export class BamlSyncClient { + private runtime: BamlRuntime + private ctx_manager: BamlCtxManager + + constructor(private runtime: BamlRuntime, private ctx_manager: BamlCtxManager) {} + + /* + * @deprecated NOT IMPLEMENTED as streaming must by async. We + * are not providing an async version as we want to reserve the + * right to provide a sync version in the future. + */ + get stream() { + throw new Error("stream is not available in BamlSyncClient. Use `import { b } from 'baml_client/async_client") + } + + + AaaSamOutputFormat( + recipe: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Recipe { + try { + const raw = this.runtime.callFunctionSync( + "AaaSamOutputFormat", + { + "recipe": recipe + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Recipe + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasThatPointsToRecursiveType( + list: LinkedListAliasNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): LinkedListAliasNode { + try { + const raw = this.runtime.callFunctionSync( + "AliasThatPointsToRecursiveType", + { + "list": list + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LinkedListAliasNode + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasWithMultipleAttrs( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Checked { + try { + const raw = this.runtime.callFunctionSync( + "AliasWithMultipleAttrs", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasedInputClass( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AliasedInputClass", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasedInputClass2( + input: InputClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AliasedInputClass2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasedInputClassNested( + input: InputClassNested, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AliasedInputClassNested", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasedInputEnum( + input: AliasedEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AliasedInputEnum", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AliasedInputList( + input: AliasedEnum[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AliasedInputList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AllowedOptionals( + optionals: OptionalListAndMap, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): OptionalListAndMap { + try { + const raw = this.runtime.callFunctionSync( + "AllowedOptionals", + { + "optionals": optionals + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OptionalListAndMap + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AssertFn( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "AssertFn", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + AudioInput( + aud: Audio, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "AudioInput", + { + "aud": aud + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + BuildLinkedList( + input: number[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): LinkedList { + try { + const raw = this.runtime.callFunctionSync( + "BuildLinkedList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LinkedList + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + BuildTree( + input: BinaryNode, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Tree { + try { + const raw = this.runtime.callFunctionSync( + "BuildTree", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Tree + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ClassThatPointsToRecursiveClassThroughAlias( + cls: ClassToRecAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ClassToRecAlias { + try { + const raw = this.runtime.callFunctionSync( + "ClassThatPointsToRecursiveClassThroughAlias", + { + "cls": cls + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassToRecAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ClassifyDynEnumTwo( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): (string | DynEnumTwo) { + try { + const raw = this.runtime.callFunctionSync( + "ClassifyDynEnumTwo", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (string | DynEnumTwo) + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ClassifyMessage( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Category { + try { + const raw = this.runtime.callFunctionSync( + "ClassifyMessage", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ClassifyMessage2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Category { + try { + const raw = this.runtime.callFunctionSync( + "ClassifyMessage2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ClassifyMessage3( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Category { + try { + const raw = this.runtime.callFunctionSync( + "ClassifyMessage3", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Category + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + Completion( + prefix: string,suffix: string,language: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "Completion", + { + "prefix": prefix,"suffix": suffix,"language": language + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + CustomTask( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BookOrder | FlightConfirmation | GroceryReceipt { + try { + const raw = this.runtime.callFunctionSync( + "CustomTask", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as BookOrder | FlightConfirmation | GroceryReceipt + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DescribeImage( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "DescribeImage", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DescribeImage2( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "DescribeImage2", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DescribeImage3( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "DescribeImage3", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DescribeImage4( + classWithImage: ClassWithImage,img2: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "DescribeImage4", + { + "classWithImage": classWithImage,"img2": img2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DifferentiateUnions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): OriginalA | OriginalB { + try { + const raw = this.runtime.callFunctionSync( + "DifferentiateUnions", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OriginalA | OriginalB + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DummyOutputFunction( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): DummyOutput { + try { + const raw = this.runtime.callFunctionSync( + "DummyOutputFunction", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DummyOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DynamicFunc( + input: DynamicClassOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): DynamicClassTwo { + try { + const raw = this.runtime.callFunctionSync( + "DynamicFunc", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynamicClassTwo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DynamicInputOutput( + input: DynInputOutput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): DynInputOutput { + try { + const raw = this.runtime.callFunctionSync( + "DynamicInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynInputOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + DynamicListInputOutput( + input: DynInputOutput[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): DynInputOutput[] { + try { + const raw = this.runtime.callFunctionSync( + "DynamicListInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynInputOutput[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExpectFailure( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "ExpectFailure", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractContactInfo( + document: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ContactInfo { + try { + const raw = this.runtime.callFunctionSync( + "ExtractContactInfo", + { + "document": document + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ContactInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractHobby( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): (string | Hobby)[] { + try { + const raw = this.runtime.callFunctionSync( + "ExtractHobby", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (string | Hobby)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractNames( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string[] { + try { + const raw = this.runtime.callFunctionSync( + "ExtractNames", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractPeople( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Person[] { + try { + const raw = this.runtime.callFunctionSync( + "ExtractPeople", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Person[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractReceiptInfo( + email: string,reason: "curiosity" | "personal_finance", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ReceiptInfo { + try { + const raw = this.runtime.callFunctionSync( + "ExtractReceiptInfo", + { + "email": email,"reason": reason + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ReceiptInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractResume( + resume: string,img?: Image | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Resume { + try { + const raw = this.runtime.callFunctionSync( + "ExtractResume", + { + "resume": resume,"img": img?? null + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Resume + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ExtractResume2( + resume: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Resume { + try { + const raw = this.runtime.callFunctionSync( + "ExtractResume2", + { + "resume": resume + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Resume + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnClassOptionalOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ClassOptionalOutput | null { + try { + const raw = this.runtime.callFunctionSync( + "FnClassOptionalOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassOptionalOutput | null + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnClassOptionalOutput2( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ClassOptionalOutput2 | null { + try { + const raw = this.runtime.callFunctionSync( + "FnClassOptionalOutput2", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassOptionalOutput2 | null + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnEnumListOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): EnumOutput[] { + try { + const raw = this.runtime.callFunctionSync( + "FnEnumListOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as EnumOutput[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): EnumOutput { + try { + const raw = this.runtime.callFunctionSync( + "FnEnumOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as EnumOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnLiteralClassInputOutput( + input: LiteralClassHello, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): LiteralClassHello { + try { + const raw = this.runtime.callFunctionSync( + "FnLiteralClassInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LiteralClassHello + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnLiteralUnionClassInputOutput( + input: LiteralClassOne | LiteralClassTwo, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): LiteralClassOne | LiteralClassTwo { + try { + const raw = this.runtime.callFunctionSync( + "FnLiteralUnionClassInputOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as LiteralClassOne | LiteralClassTwo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnNamedArgsSingleStringOptional( + myString?: string | null, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "FnNamedArgsSingleStringOptional", + { + "myString": myString?? null + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): boolean { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputBool", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as boolean + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputClass( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestOutputClass { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputClass", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestOutputClass + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputClassList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestOutputClass[] { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputClassList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestOutputClass[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputClassNested( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestClassNested { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputClassNested", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassNested + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputClassWithEnum( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestClassWithEnum { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputClassWithEnum", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassWithEnum + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputInt", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputLiteralBool( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): false { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputLiteralBool", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as false + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputLiteralInt( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): 5 { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputLiteralInt", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as 5 + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputLiteralString( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): "example output" { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputLiteralString", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as "example output" + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnOutputStringList( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string[] { + try { + const raw = this.runtime.callFunctionSync( + "FnOutputStringList", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnTestAliasedEnumOutput( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestEnum { + try { + const raw = this.runtime.callFunctionSync( + "FnTestAliasedEnumOutput", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestEnum + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnTestClassAlias( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestClassAlias { + try { + const raw = this.runtime.callFunctionSync( + "FnTestClassAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestClassAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + FnTestNamedArgsSingleEnum( + myArg: NamedArgsSingleEnum, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "FnTestNamedArgsSingleEnum", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + GetDataType( + text: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): RaysData { + try { + const raw = this.runtime.callFunctionSync( + "GetDataType", + { + "text": text + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RaysData + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + GetOrderInfo( + email: Email, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): OrderInfo { + try { + const raw = this.runtime.callFunctionSync( + "GetOrderInfo", + { + "email": email + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as OrderInfo + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + GetQuery( + query: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): SearchParams { + try { + const raw = this.runtime.callFunctionSync( + "GetQuery", + { + "query": query + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as SearchParams + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + InOutEnumMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Partial> { + try { + const raw = this.runtime.callFunctionSync( + "InOutEnumMapKey", + { + "i1": i1,"i2": i2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + InOutLiteralStringUnionMapKey( + i1: Partial>,i2: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Partial> { + try { + const raw = this.runtime.callFunctionSync( + "InOutLiteralStringUnionMapKey", + { + "i1": i1,"i2": i2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + InOutSingleLiteralStringMapKey( + m: Partial>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Partial> { + try { + const raw = this.runtime.callFunctionSync( + "InOutSingleLiteralStringMapKey", + { + "m": m + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Partial> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + JsonTypeAliasCycle( + input: JsonValue, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): JsonValue { + try { + const raw = this.runtime.callFunctionSync( + "JsonTypeAliasCycle", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as JsonValue + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + LiteralUnionsTest( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): 1 | true | "string output" { + try { + const raw = this.runtime.callFunctionSync( + "LiteralUnionsTest", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as 1 | true | "string output" + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MakeBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Checked { + try { + const raw = this.runtime.callFunctionSync( + "MakeBlockConstraint", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MakeNestedBlockConstraint( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): NestedBlockConstraint { + try { + const raw = this.runtime.callFunctionSync( + "MakeNestedBlockConstraint", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as NestedBlockConstraint + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MakeSemanticContainer( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): SemanticContainer { + try { + const raw = this.runtime.callFunctionSync( + "MakeSemanticContainer", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as SemanticContainer + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MapAlias( + m: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Record { + try { + const raw = this.runtime.callFunctionSync( + "MapAlias", + { + "m": m + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MergeAliasAttributes( + money: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): MergeAttrs { + try { + const raw = this.runtime.callFunctionSync( + "MergeAliasAttributes", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as MergeAttrs + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + MyFunc( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): DynamicOutput { + try { + const raw = this.runtime.callFunctionSync( + "MyFunc", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as DynamicOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + NestedAlias( + c: number | string | boolean | number | string[] | Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number | string | boolean | number | string[] | Record { + try { + const raw = this.runtime.callFunctionSync( + "NestedAlias", + { + "c": c + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number | string | boolean | number | string[] | Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + NullLiteralClassHello( + s: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): ClassForNullLiteral { + try { + const raw = this.runtime.callFunctionSync( + "NullLiteralClassHello", + { + "s": s + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as ClassForNullLiteral + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + OptionalTest_Function( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): (OptionalTest_ReturnType | null)[] { + try { + const raw = this.runtime.callFunctionSync( + "OptionalTest_Function", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (OptionalTest_ReturnType | null)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PredictAge( + name: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): FooAny { + try { + const raw = this.runtime.callFunctionSync( + "PredictAge", + { + "name": name + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as FooAny + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PredictAgeBare( + inp: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Checked { + try { + const raw = this.runtime.callFunctionSync( + "PredictAgeBare", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PrimitiveAlias( + p: number | string | boolean | number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number | string | boolean | number { + try { + const raw = this.runtime.callFunctionSync( + "PrimitiveAlias", + { + "p": p + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number | string | boolean | number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestClaude( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestClaude", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestClaudeChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestClaudeChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestClaudeChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestClaudeChatNoSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestOpenAI", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestOpenAIChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestOpenAIChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestOpenAIChatNoSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestOpenAIChatNoSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + PromptTestStreaming( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "PromptTestStreaming", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + RecursiveAliasCycle( + input: RecAliasOne, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): RecAliasOne { + try { + const raw = this.runtime.callFunctionSync( + "RecursiveAliasCycle", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecAliasOne + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + RecursiveClassWithAliasIndirection( + cls: NodeWithAliasIndirection, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): NodeWithAliasIndirection { + try { + const raw = this.runtime.callFunctionSync( + "RecursiveClassWithAliasIndirection", + { + "cls": cls + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as NodeWithAliasIndirection + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ReturnAliasWithMergedAttributes( + money: Checked, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Checked { + try { + const raw = this.runtime.callFunctionSync( + "ReturnAliasWithMergedAttributes", + { + "money": money + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Checked + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ReturnFailingAssert( + inp: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "ReturnFailingAssert", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + ReturnMalformedConstraints( + a: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): MalformedConstraints { + try { + const raw = this.runtime.callFunctionSync( + "ReturnMalformedConstraints", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as MalformedConstraints + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + SchemaDescriptions( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Schema { + try { + const raw = this.runtime.callFunctionSync( + "SchemaDescriptions", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Schema + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + SimpleRecursiveListAlias( + input: RecursiveListAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): RecursiveListAlias { + try { + const raw = this.runtime.callFunctionSync( + "SimpleRecursiveListAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveListAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + SimpleRecursiveMapAlias( + input: RecursiveMapAlias, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): RecursiveMapAlias { + try { + const raw = this.runtime.callFunctionSync( + "SimpleRecursiveMapAlias", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveMapAlias + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + StreamBigNumbers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): BigNumbers { + try { + const raw = this.runtime.callFunctionSync( + "StreamBigNumbers", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as BigNumbers + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + StreamFailingAssertion( + theme: string,length: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TwoStoriesOneTitle { + try { + const raw = this.runtime.callFunctionSync( + "StreamFailingAssertion", + { + "theme": theme,"length": length + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TwoStoriesOneTitle + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + StreamOneBigNumber( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "StreamOneBigNumber", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + StreamUnionIntegers( + digits: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): (number | string)[] { + try { + const raw = this.runtime.callFunctionSync( + "StreamUnionIntegers", + { + "digits": digits + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as (number | string)[] + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + StreamingCompoundNumbers( + digits: number,yapping: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): CompoundBigNumbers { + try { + const raw = this.runtime.callFunctionSync( + "StreamingCompoundNumbers", + { + "digits": digits,"yapping": yapping + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as CompoundBigNumbers + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TakeRecAliasDep( + input: RecursiveAliasDependency, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): RecursiveAliasDependency { + try { + const raw = this.runtime.callFunctionSync( + "TakeRecAliasDep", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as RecursiveAliasDependency + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAnthropic( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAnthropic", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAnthropicShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAnthropicShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAws( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAws", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAwsInvalidAccessKey( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAwsInvalidAccessKey", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAwsInvalidProfile( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAwsInvalidProfile", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAwsInvalidRegion( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAwsInvalidRegion", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAwsInvalidSessionToken( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAwsInvalidSessionToken", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzure", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzureFailure( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzureFailure", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzureO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzureO1NoMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzureO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzureO1WithMaxCompletionTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzureO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzureO1WithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestAzureWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestAzureWithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestCaching( + input: string,not_cached: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestCaching", + { + "input": input,"not_cached": not_cached + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFallbackClient", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFallbackToShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFallbackToShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleBool( + myBool: boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleBool", + { + "myBool": myBool + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleClass( + myArg: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleClass", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleEnumList( + myArg: NamedArgsSingleEnumList[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleEnumList", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleFloat( + myFloat: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleFloat", + { + "myFloat": myFloat + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleInt( + myInt: number, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleInt", + { + "myInt": myInt + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleMapStringToClass( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Record { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleMapStringToClass", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleMapStringToMap( + myMap: Record>, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Record> { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleMapStringToMap", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record> + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleMapStringToString( + myMap: Record, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): Record { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleMapStringToString", + { + "myMap": myMap + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as Record + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleString( + myString: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleString", + { + "myString": myString + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleStringArray( + myStringArray: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleStringArray", + { + "myStringArray": myStringArray + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestFnNamedArgsSingleStringList( + myArg: string[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestFnNamedArgsSingleStringList", + { + "myArg": myArg + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestGemini( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestGemini", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestGeminiOpenAiGeneric( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestGeminiOpenAiGeneric", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestGeminiSystem( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestGeminiSystem", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestGeminiSystemAsChat( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestGeminiSystemAsChat", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestImageInput( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestImageInput", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestImageInputAnthropic( + img: Image, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestImageInputAnthropic", + { + "img": img + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestImageListInput( + imgs: Image[], + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestImageListInput", + { + "imgs": imgs + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestMemory( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): TestMemoryOutput { + try { + const raw = this.runtime.callFunctionSync( + "TestMemory", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as TestMemoryOutput + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestMulticlassNamedArgs( + myArg: NamedArgsSingleClass,myArg2: NamedArgsSingleClass, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestMulticlassNamedArgs", + { + "myArg": myArg,"myArg2": myArg2 + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestNamedArgsLiteralBool( + myBool: true, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestNamedArgsLiteralBool", + { + "myBool": myBool + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestNamedArgsLiteralInt( + myInt: 1, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestNamedArgsLiteralInt", + { + "myInt": myInt + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestNamedArgsLiteralString( + myString: "My String", + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestNamedArgsLiteralString", + { + "myString": myString + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOllama( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOllama", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAI( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAI", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAILegacyProvider( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAILegacyProvider", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIO1NoMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIO1NoMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIO1WithMaxCompletionTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIO1WithMaxCompletionTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIO1WithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIO1WithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIShorthand( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIShorthand", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIWithMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIWithMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestOpenAIWithNullMaxTokens( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestOpenAIWithNullMaxTokens", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestRetryConstant( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestRetryConstant", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestRetryExponential( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestRetryExponential", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestSingleFallbackClient( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestSingleFallbackClient", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestUniverseQuestion( + question: UniverseQuestionInput, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): UniverseQuestion { + try { + const raw = this.runtime.callFunctionSync( + "TestUniverseQuestion", + { + "question": question + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as UniverseQuestion + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestVertex( + input: string, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestVertex", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + TestVertexWithSystemInstructions( + + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): string { + try { + const raw = this.runtime.callFunctionSync( + "TestVertexWithSystemInstructions", + { + + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as string + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + UnionTest_Function( + input: string | boolean, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): UnionTest_ReturnType { + try { + const raw = this.runtime.callFunctionSync( + "UnionTest_Function", + { + "input": input + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as UnionTest_ReturnType + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + UseBlockConstraint( + inp: BlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "UseBlockConstraint", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + UseMalformedConstraints( + a: MalformedConstraints2, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "UseMalformedConstraints", + { + "a": a + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + + UseNestedBlockConstraint( + inp: NestedBlockConstraintForParam, + __baml_options__?: { tb?: TypeBuilder, clientRegistry?: ClientRegistry } + ): number { + try { + const raw = this.runtime.callFunctionSync( + "UseNestedBlockConstraint", + { + "inp": inp + }, + this.ctx_manager.cloneContext(), + __baml_options__?.tb?.__tb(), + __baml_options__?.clientRegistry, + ) + return raw.parsed(false) as number + } catch (error: any) { + const bamlError = createBamlValidationError(error); + if (bamlError instanceof BamlValidationError) { + throw bamlError; + } else { + throw error; + } + } + } + +} + +export const b = new BamlSyncClient(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_RUNTIME, DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) \ No newline at end of file diff --git a/integ-tests/react/baml_client/tracing.ts b/integ-tests/react/baml_client/tracing.ts new file mode 100644 index 000000000..f39dc83a0 --- /dev/null +++ b/integ-tests/react/baml_client/tracing.ts @@ -0,0 +1,33 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { BamlLogEvent } from '@boundaryml/baml'; +import { DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX } from './globals'; + +const traceAsync = +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.traceFnAsync.bind(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) +const traceSync = +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.traceFnSync.bind(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) +const setTags = +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.upsertTags.bind(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX) +const flush = () => { + DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.flush.bind(DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX)() +} +const onLogEvent = (callback: undefined | ((event: BamlLogEvent) => void)) => +DO_NOT_USE_DIRECTLY_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_CTX.onLogEvent(callback) + +export { traceAsync, traceSync, setTags, flush, onLogEvent } \ No newline at end of file diff --git a/integ-tests/react/baml_client/type_builder.ts b/integ-tests/react/baml_client/type_builder.ts new file mode 100644 index 000000000..5a62db7b4 --- /dev/null +++ b/integ-tests/react/baml_client/type_builder.ts @@ -0,0 +1,167 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import type { FieldType } from '@boundaryml/baml/native' +import { TypeBuilder as _TypeBuilder } from '@boundaryml/baml/type_builder' +import type { EnumBuilder, ClassBuilder } from '@boundaryml/baml/type_builder' + +export default class TypeBuilder { + private tb: _TypeBuilder; + + DummyOutput: ClassBuilder<'DummyOutput', "nonce" | "nonce2">; + + DynInputOutput: ClassBuilder<'DynInputOutput', "testKey">; + + DynamicClassOne: ClassBuilder<'DynamicClassOne'>; + + DynamicClassTwo: ClassBuilder<'DynamicClassTwo', "hi" | "some_class" | "status">; + + DynamicOutput: ClassBuilder<'DynamicOutput'>; + + OriginalB: ClassBuilder<'OriginalB', "value">; + + Person: ClassBuilder<'Person', "name" | "hair_color">; + + SomeClassNestedDynamic: ClassBuilder<'SomeClassNestedDynamic', "hi">; + + + Color: EnumBuilder<'Color', "RED" | "BLUE" | "GREEN" | "YELLOW" | "BLACK" | "WHITE">; + + DynEnumOne: EnumBuilder<'DynEnumOne'>; + + DynEnumTwo: EnumBuilder<'DynEnumTwo'>; + + Hobby: EnumBuilder<'Hobby', "SPORTS" | "MUSIC" | "READING">; + + + constructor() { + this.tb = new _TypeBuilder({ + classes: new Set([ + "AnotherObject","BigNumbers","BinaryNode","Blah","BlockConstraint","BlockConstraintForParam","BookOrder","ClassForNullLiteral","ClassOptionalOutput","ClassOptionalOutput2","ClassToRecAlias","ClassWithBlockDone","ClassWithImage","ClassWithoutDone","ComplexMemoryObject","CompoundBigNumbers","ContactInfo","CustomTaskResult","DummyOutput","DynInputOutput","DynamicClassOne","DynamicClassTwo","DynamicOutput","Earthling","Education","Email","EmailAddress","Event","FakeImage","FlightConfirmation","FooAny","Forest","FormatterTest0","FormatterTest1","FormatterTest2","FormatterTest3","GroceryReceipt","InnerClass","InnerClass2","InputClass","InputClassNested","LinkedList","LinkedListAliasNode","LiteralClassHello","LiteralClassOne","LiteralClassTwo","MalformedConstraints","MalformedConstraints2","Martian","MemoryObject","MergeAttrs","NamedArgsSingleClass","Nested","Nested2","NestedBlockConstraint","NestedBlockConstraintForParam","Node","NodeWithAliasIndirection","OptionalListAndMap","OptionalTest_Prop1","OptionalTest_ReturnType","OrderInfo","OriginalA","OriginalB","Person","PhoneNumber","Quantity","RaysData","ReceiptInfo","ReceiptItem","Recipe","RecursiveAliasDependency","Resume","Schema","SearchParams","SemanticContainer","SmallThing","SomeClassNestedDynamic","StringToClassEntry","TestClassAlias","TestClassNested","TestClassWithEnum","TestMemoryOutput","TestOutputClass","Tree","TwoStoriesOneTitle","UnionTest_ReturnType","UniverseQuestion","UniverseQuestionInput","WithReasoning", + ]), + enums: new Set([ + "AliasedEnum","Category","Category2","Category3","Color","DataType","DynEnumOne","DynEnumTwo","EnumInClass","EnumOutput","Hobby","MapKey","NamedArgsSingleEnum","NamedArgsSingleEnumList","OptionalTest_CategoryType","OrderStatus","Tag","TestEnum", + ]) + }); + + this.DummyOutput = this.tb.classBuilder("DummyOutput", [ + "nonce","nonce2", + ]); + + this.DynInputOutput = this.tb.classBuilder("DynInputOutput", [ + "testKey", + ]); + + this.DynamicClassOne = this.tb.classBuilder("DynamicClassOne", [ + + ]); + + this.DynamicClassTwo = this.tb.classBuilder("DynamicClassTwo", [ + "hi","some_class","status", + ]); + + this.DynamicOutput = this.tb.classBuilder("DynamicOutput", [ + + ]); + + this.OriginalB = this.tb.classBuilder("OriginalB", [ + "value", + ]); + + this.Person = this.tb.classBuilder("Person", [ + "name","hair_color", + ]); + + this.SomeClassNestedDynamic = this.tb.classBuilder("SomeClassNestedDynamic", [ + "hi", + ]); + + + this.Color = this.tb.enumBuilder("Color", [ + "RED","BLUE","GREEN","YELLOW","BLACK","WHITE", + ]); + + this.DynEnumOne = this.tb.enumBuilder("DynEnumOne", [ + + ]); + + this.DynEnumTwo = this.tb.enumBuilder("DynEnumTwo", [ + + ]); + + this.Hobby = this.tb.enumBuilder("Hobby", [ + "SPORTS","MUSIC","READING", + ]); + + } + + __tb() { + return this.tb._tb(); + } + + string(): FieldType { + return this.tb.string() + } + + literalString(value: string): FieldType { + return this.tb.literalString(value) + } + + literalInt(value: number): FieldType { + return this.tb.literalInt(value) + } + + literalBool(value: boolean): FieldType { + return this.tb.literalBool(value) + } + + int(): FieldType { + return this.tb.int() + } + + float(): FieldType { + return this.tb.float() + } + + bool(): FieldType { + return this.tb.bool() + } + + list(type: FieldType): FieldType { + return this.tb.list(type) + } + + null(): FieldType { + return this.tb.null() + } + + map(key: FieldType, value: FieldType): FieldType { + return this.tb.map(key, value) + } + + union(types: FieldType[]): FieldType { + return this.tb.union(types) + } + + addClass(name: Name): ClassBuilder { + return this.tb.addClass(name); + } + + addEnum(name: Name): EnumBuilder { + return this.tb.addEnum(name); + } +} \ No newline at end of file diff --git a/integ-tests/react/baml_client/types.ts b/integ-tests/react/baml_client/types.ts new file mode 100644 index 000000000..166425593 --- /dev/null +++ b/integ-tests/react/baml_client/types.ts @@ -0,0 +1,766 @@ +/************************************************************************************************* + +Welcome to Baml! To use this generated code, please run one of the following: + +$ npm install @boundaryml/baml +$ yarn add @boundaryml/baml +$ pnpm add @boundaryml/baml + +*************************************************************************************************/ + +// This file was generated by BAML: do not edit it. Instead, edit the BAML +// files and re-generate this code. +// +/* eslint-disable */ +// tslint:disable +// @ts-nocheck +// biome-ignore format: autogenerated code +import { Image } from "@boundaryml/baml" + +export type RecursivePartialNull = T extends keyof typeof import("./partial_types") + ? typeof import("./partial_types")[T] + : T extends object + ? { [P in keyof T]?: RecursivePartialNull } + : T | null; + +export interface Checked { + value: T, + checks: Record, +} + +export interface Check { + name: string, + expr: string + status: "succeeded" | "failed" +} + +export function all_succeeded(checks: Record): boolean { + return get_checks(checks).every(check => check.status === "succeeded") +} + +export function get_checks(checks: Record): Check[] { + return Object.values(checks) +} +export enum AliasedEnum { + KEY_ONE = "KEY_ONE", + KEY_TWO = "KEY_TWO", +} + +export enum Category { + Refund = "Refund", + CancelOrder = "CancelOrder", + TechnicalSupport = "TechnicalSupport", + AccountIssue = "AccountIssue", + Question = "Question", +} + +export enum Category2 { + Refund = "Refund", + CancelOrder = "CancelOrder", + TechnicalSupport = "TechnicalSupport", + AccountIssue = "AccountIssue", + Question = "Question", +} + +export enum Category3 { + Refund = "Refund", + CancelOrder = "CancelOrder", + TechnicalSupport = "TechnicalSupport", + AccountIssue = "AccountIssue", + Question = "Question", +} + +export enum Color { + RED = "RED", + BLUE = "BLUE", + GREEN = "GREEN", + YELLOW = "YELLOW", + BLACK = "BLACK", + WHITE = "WHITE", +} + +export enum DataType { + Resume = "Resume", + Event = "Event", +} + +export enum DynEnumOne { +} + +export enum DynEnumTwo { +} + +export enum EnumInClass { + ONE = "ONE", + TWO = "TWO", +} + +/** + * An enum with three values, + * ONE, TWO and THREE. + */ +export enum EnumOutput { + /** + * The first enum. + */ + ONE = "ONE", + /** + * The second enum. + */ + TWO = "TWO", + THREE = "THREE", +} + +export enum Hobby { + SPORTS = "SPORTS", + MUSIC = "MUSIC", + READING = "READING", +} + +export enum MapKey { + A = "A", + B = "B", + C = "C", +} + +export enum NamedArgsSingleEnum { + ONE = "ONE", + TWO = "TWO", +} + +export enum NamedArgsSingleEnumList { + ONE = "ONE", + TWO = "TWO", +} + +export enum OptionalTest_CategoryType { + Aleph = "Aleph", + Beta = "Beta", + Gamma = "Gamma", +} + +export enum OrderStatus { + ORDERED = "ORDERED", + SHIPPED = "SHIPPED", + DELIVERED = "DELIVERED", + CANCELLED = "CANCELLED", +} + +export enum Tag { + Security = "Security", + AI = "AI", + Blockchain = "Blockchain", +} + +export enum TestEnum { + A = "A", + B = "B", + C = "C", + D = "D", + E = "E", + F = "F", + G = "G", +} + +export interface AnotherObject { + id: string + thingy2: string + thingy3: string + +} + +export interface BigNumbers { + a: number + b: number + +} + +export interface BinaryNode { + data: number + left?: BinaryNode | null + right?: BinaryNode | null + +} + +export interface Blah { + prop4?: string | null + +} + +export interface BlockConstraint { + foo: number + bar: string + +} + +export interface BlockConstraintForParam { + bcfp: number + bcfp2: string + +} + +export interface BookOrder { + orderId: string + title: string + quantity: number + price: number + +} + +export interface ClassForNullLiteral { + a: "hi" + +} + +export interface ClassOptionalOutput { + prop1: string + prop2: string + +} + +export interface ClassOptionalOutput2 { + prop1?: string | null + prop2?: string | null + prop3?: Blah | null + +} + +export interface ClassToRecAlias { + list: LinkedListAliasNode + +} + +export interface ClassWithBlockDone { + i_16_digits: number + s_20_words: string + +} + +export interface ClassWithImage { + myImage: Image + param2: string + fake_image: FakeImage + +} + +export interface ClassWithoutDone { + i_16_digits: number + s_20_words: string + +} + +export interface ComplexMemoryObject { + id: string + name: string + description: string + metadata: (string | number | number)[] + +} + +export interface CompoundBigNumbers { + big: BigNumbers + big_nums: BigNumbers[] + another: BigNumbers + +} + +export interface ContactInfo { + primary: PhoneNumber | EmailAddress + secondary?: PhoneNumber | EmailAddress | null + +} + +export interface CustomTaskResult { + bookOrder?: BookOrder | null | null + flightConfirmation?: FlightConfirmation | null | null + groceryReceipt?: GroceryReceipt | null | null + +} + +export interface DummyOutput { + nonce: string + nonce2: string + + [key: string]: any; +} + +export interface DynInputOutput { + testKey: string + + [key: string]: any; +} + +export interface DynamicClassOne { + + [key: string]: any; +} + +export interface DynamicClassTwo { + hi: string + some_class: SomeClassNestedDynamic + status: (string | DynEnumOne) + + [key: string]: any; +} + +export interface DynamicOutput { + + [key: string]: any; +} + +export interface Earthling { + age: Checked + +} + +export interface Education { + institution: string + location: string + degree: string + major: string[] + graduation_date?: string | null + +} + +export interface Email { + subject: string + body: string + from_address: string + +} + +export interface EmailAddress { + value: string + +} + +export interface Event { + title: string + date: string + location: string + description: string + +} + +export interface FakeImage { + url: string + +} + +export interface FlightConfirmation { + confirmationNumber: string + flightNumber: string + departureTime: string + arrivalTime: string + seatNumber: string + +} + +export interface FooAny { + planetary_age: Martian | Earthling + certainty: Checked + species: Checked + +} + +export interface Forest { + trees: Tree[] + +} + +export interface FormatterTest0 { + lorem: string + ipsum: string + +} + +export interface FormatterTest1 { + lorem: string + ipsum: string + +} + +export interface FormatterTest2 { + lorem: string + ipsum: string + +} + +export interface FormatterTest3 { + lorem: string + ipsum: string + +} + +export interface GroceryReceipt { + receiptId: string + storeName: string + items: (string | number | number)[] + totalAmount: number + +} + +export interface InnerClass { + prop1: string + prop2: string + inner: InnerClass2 + +} + +export interface InnerClass2 { + prop2: number + prop3: number + +} + +export interface InputClass { + key: string + key2: string + +} + +export interface InputClassNested { + key: string + nested: InputClass + +} + +export interface LinkedList { + head?: Node | null + len: number + +} + +export interface LinkedListAliasNode { + value: number + next?: LinkedListAliasNode | null + +} + +export interface LiteralClassHello { + prop: "hello" + +} + +export interface LiteralClassOne { + prop: "one" + +} + +export interface LiteralClassTwo { + prop: "two" + +} + +export interface MalformedConstraints { + foo: Checked + +} + +export interface MalformedConstraints2 { + foo: number + +} + +/** + * A Martian organism with an age. + * Such a nice type. + */ +export interface Martian { + /** + * The age of the Martian in Mars years. + * So many Mars years. + */ + age: Checked + +} + +export interface MemoryObject { + id: string + name: string + description: string + +} + +export interface MergeAttrs { + amount: Checked + +} + +export interface NamedArgsSingleClass { + key: string + key_two: boolean + key_three: number + +} + +export interface Nested { + prop3?: string | null | null + prop4?: string | null | null + prop20: Nested2 + +} + +export interface Nested2 { + prop11?: string | null | null + prop12?: string | null | null + +} + +export interface NestedBlockConstraint { + nbc: Checked + +} + +export interface NestedBlockConstraintForParam { + nbcfp: BlockConstraintForParam + +} + +export interface Node { + data: number + next?: Node | null + +} + +export interface NodeWithAliasIndirection { + value: number + next?: NodeWithAliasIndirection | null + +} + +export interface OptionalListAndMap { + p?: string[] | null + q?: Record | null + +} + +export interface OptionalTest_Prop1 { + omega_a: string + omega_b: number + +} + +export interface OptionalTest_ReturnType { + omega_1?: OptionalTest_Prop1 | null + omega_2?: string | null + omega_3: (OptionalTest_CategoryType | null)[] + +} + +export interface OrderInfo { + order_status: OrderStatus + tracking_number?: string | null + estimated_arrival_date?: string | null + +} + +export interface OriginalA { + value: number + +} + +export interface OriginalB { + value: number + + [key: string]: any; +} + +export interface Person { + name?: string | null + hair_color?: (string | Color) | null + + [key: string]: any; +} + +export interface PhoneNumber { + value: string + +} + +export interface Quantity { + amount: number | number + unit?: string | null + +} + +export interface RaysData { + dataType: DataType + value: Resume | Event + +} + +export interface ReceiptInfo { + items: ReceiptItem[] + total_cost?: number | null + venue: "barisa" | "ox_burger" + +} + +export interface ReceiptItem { + name: string + description?: string | null + quantity: number + price: number + +} + +export interface Recipe { + ingredients: Record + recipe_type: "breakfast" | "dinner" + +} + +export interface RecursiveAliasDependency { + value: JsonValue + +} + +export interface Resume { + name: string + email: string + phone: string + experience: Education[] + education: string[] + skills: string[] + +} + +export interface Schema { + prop1?: string | null | null + prop2: Nested | string + prop5: (string | null | null)[] + prop6: string | Nested[] + nested_attrs: (string | null | null | Nested)[] + parens?: string | null | null + other_group: string | number | string + +} + +export interface SearchParams { + dateRange?: number | null + location: string[] + jobTitle?: WithReasoning | null + company?: WithReasoning | null + description: WithReasoning[] + tags: (Tag | string)[] + +} + +export interface SemanticContainer { + sixteen_digit_number: number + string_with_twenty_words: string + class_1: ClassWithoutDone + class_2: ClassWithBlockDone + class_done_needed: ClassWithBlockDone + class_needed: ClassWithoutDone + three_small_things: SmallThing[] + final_string: string + +} + +export interface SmallThing { + i_16_digits: number + i_8_digits: number + +} + +export interface SomeClassNestedDynamic { + hi: string + + [key: string]: any; +} + +export interface StringToClassEntry { + word: string + +} + +export interface TestClassAlias { + key: string + key2: string + key3: string + key4: string + key5: string + +} + +export interface TestClassNested { + prop1: string + prop2: InnerClass + +} + +export interface TestClassWithEnum { + prop1: string + prop2: EnumInClass + +} + +export interface TestMemoryOutput { + items: (MemoryObject | ComplexMemoryObject | AnotherObject)[] + more_items: (MemoryObject | ComplexMemoryObject | AnotherObject)[] + +} + +export interface TestOutputClass { + prop1: string + prop2: number + +} + +export interface Tree { + data: number + children: Forest + +} + +export interface TwoStoriesOneTitle { + title: string + story_a: string + story_b: string + +} + +export interface UnionTest_ReturnType { + prop1: string | boolean + prop2: (number | boolean)[] + prop3: boolean[] | number[] + +} + +/** + * my docs + */ +export interface UniverseQuestion { + question: string + answer: string + +} + +export interface UniverseQuestionInput { + question: string + +} + +export interface WithReasoning { + value: string + reasoning: string + +} + +export type RecursiveMapAlias = Record + +export type RecursiveListAlias = RecursiveListAlias[] + +export type RecAliasOne = RecAliasTwo + +export type RecAliasTwo = RecAliasThree + +export type RecAliasThree = RecAliasOne[] + +export type JsonValue = number | string | boolean | number | JsonObject | JsonArray + +export type JsonObject = Record + +export type JsonArray = JsonValue[] diff --git a/integ-tests/react/components.json b/integ-tests/react/components.json new file mode 100644 index 000000000..d710b4962 --- /dev/null +++ b/integ-tests/react/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/integ-tests/react/eslint.config.mjs b/integ-tests/react/eslint.config.mjs new file mode 100644 index 000000000..c85fb67c4 --- /dev/null +++ b/integ-tests/react/eslint.config.mjs @@ -0,0 +1,16 @@ +import { dirname } from "path"; +import { fileURLToPath } from "url"; +import { FlatCompat } from "@eslint/eslintrc"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +const compat = new FlatCompat({ + baseDirectory: __dirname, +}); + +const eslintConfig = [ + ...compat.extends("next/core-web-vitals", "next/typescript"), +]; + +export default eslintConfig; diff --git a/integ-tests/react/jest.config.js b/integ-tests/react/jest.config.js new file mode 100644 index 000000000..8290ed9e9 --- /dev/null +++ b/integ-tests/react/jest.config.js @@ -0,0 +1,12 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'jsdom', + roots: ['/tests'], + testMatch: ['**/*.test.ts', '**/*.test.tsx'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], + setupFilesAfterEnv: ['/tests/test-setup.ts'], + testTimeout: 600000, + moduleNameMapper: { + '^@/(.*)$': '/$1', + }, +} diff --git a/integ-tests/react/next.config.ts b/integ-tests/react/next.config.ts new file mode 100644 index 000000000..c3fb76d82 --- /dev/null +++ b/integ-tests/react/next.config.ts @@ -0,0 +1,7 @@ +import { withBaml } from "@boundaryml/baml-nextjs-plugin"; +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { +}; + +export default withBaml()(nextConfig); diff --git a/integ-tests/react/package.json b/integ-tests/react/package.json new file mode 100644 index 000000000..a0619fc4a --- /dev/null +++ b/integ-tests/react/package.json @@ -0,0 +1,69 @@ +{ + "name": "cli", + "version": "0.1.0", + "private": true, + "packageManager": "pnpm@9.12.0", + "scripts": { + "dev": "next dev --turbo", + "start": "next start", + "lint": "next lint", + "test": "jest", + "build:debug": "cd ../../engine/language_client_typescript && pnpm run build:debug && cd - && pnpm i", + "build": "cd ../../engine/language_client_typescript && npm run build && cd - && pnpm i", + "integ-tests:ci": "infisical run --env=test -- pnpm test -- --ci --silent false --testTimeout 30000 --verbose=false --reporters=jest-junit", + "integ-tests": "infisical run --env=test -- pnpm test -- --silent false --testTimeout 30000 --bail --reporters=default --reporters=jest-html-reporter --reporters=jest-summary-reporter", + "integ-tests:dotenv": "dotenv -e ../.env -- pnpm test -- --silent false --testTimeout 30000", + "generate": "baml-cli generate --from ../baml_src" + }, + "dependencies": { + "@boundaryml/baml": "workspace:*", + "@boundaryml/baml-darwin-arm64": "workspace:*", + "@boundaryml/baml-nextjs-plugin": "workspace:*", + "@radix-ui/react-dropdown-menu": "^2.1.4", + "@radix-ui/react-label": "^2.1.1", + "@radix-ui/react-progress": "^1.1.1", + "@radix-ui/react-slot": "^1.1.1", + "@radix-ui/react-switch": "^1.1.2", + "@radix-ui/react-tabs": "^1.1.2", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.471.1", + "next": "^15.1.4", + "next-themes": "^0.4.4", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "sonner": "^1.7.1", + "zsa": "0.6.0", + "zsa-react": "0.2.3", + "tailwind-merge": "^2.6.0", + "zod": "3.24.1", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@eslint/eslintrc": "^3", + "@swc/core": "^1.5.7", + "@swc/jest": "^0.2.36", + "@testing-library/jest-dom": "^6.6.3", + "@testing-library/react": "^16.2.0", + "@testing-library/react-hooks": "^8.0.1", + "@types/jest": "^29.5.12", + "@types/node": "^22.10.6", + "@types/react": "^19.0.6", + "@types/react-dom": "^19.0.3", + "dotenv": "^16.4.5", + "dotenv-cli": "^7.4.2", + "eslint": "^9", + "eslint-config-next": "^15.1.4", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-html-reporter": "^3.10.2", + "jest-junit": "^16.0.0", + "jest-summary-reporter": "^0.0.2", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "ts-jest": "^29.1.2", + "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", + "typescript": "^5" + } +} \ No newline at end of file diff --git a/integ-tests/react/pnpm-lock.yaml b/integ-tests/react/pnpm-lock.yaml new file mode 100644 index 000000000..c68be4874 --- /dev/null +++ b/integ-tests/react/pnpm-lock.yaml @@ -0,0 +1,9423 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@boundaryml/baml': + specifier: workspace:* + version: link:../../engine/language_client_typescript + '@boundaryml/baml-darwin-arm64': + specifier: workspace:* + version: link:../../engine/language_client_typescript/npm/darwin-arm64 + '@boundaryml/baml-nextjs-plugin': + specifier: workspace:* + version: link:../../typescript/nextjs-plugin + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.4 + version: 2.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-label': + specifier: ^2.1.1 + version: 2.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-progress': + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': + specifier: ^1.1.1 + version: 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-switch': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-tabs': + specifier: ^1.1.2 + version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + lucide-react: + specifier: ^0.471.1 + version: 0.471.2(react@19.0.0) + next: + specifier: ^15.1.4 + version: 15.1.6(@babel/core@7.26.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + next-themes: + specifier: ^0.4.4 + version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + sonner: + specifier: ^1.7.1 + version: 1.7.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + tailwind-merge: + specifier: ^2.6.0 + version: 2.6.0 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3))) + zod: + specifier: 3.24.1 + version: 3.24.1 + zsa: + specifier: 0.6.0 + version: 0.6.0(zod@3.24.1) + zsa-react: + specifier: 0.2.3 + version: 0.2.3(react@19.0.0)(zod@3.24.1) + devDependencies: + '@eslint/eslintrc': + specifier: ^3 + version: 3.2.0 + '@swc/core': + specifier: ^1.5.7 + version: 1.10.14(@swc/helpers@0.5.15) + '@swc/jest': + specifier: ^0.2.36 + version: 0.2.37(@swc/core@1.10.14(@swc/helpers@0.5.15)) + '@testing-library/jest-dom': + specifier: ^6.6.3 + version: 6.6.3 + '@testing-library/react': + specifier: ^16.2.0 + version: 16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@testing-library/react-hooks': + specifier: ^8.0.1 + version: 8.0.1(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@types/jest': + specifier: ^29.5.12 + version: 29.5.14 + '@types/node': + specifier: ^22.10.6 + version: 22.13.1 + '@types/react': + specifier: ^19.0.6 + version: 19.0.8 + '@types/react-dom': + specifier: ^19.0.3 + version: 19.0.3(@types/react@19.0.8) + dotenv: + specifier: ^16.4.5 + version: 16.4.7 + dotenv-cli: + specifier: ^7.4.2 + version: 7.4.4 + eslint: + specifier: ^9 + version: 9.19.0(jiti@1.21.7) + eslint-config-next: + specifier: ^15.1.4 + version: 15.1.6(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + jest-environment-jsdom: + specifier: ^29.7.0 + version: 29.7.0 + jest-html-reporter: + specifier: ^3.10.2 + version: 3.10.2(jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)))(typescript@5.7.3) + jest-junit: + specifier: ^16.0.0 + version: 16.0.0 + jest-summary-reporter: + specifier: ^0.0.2 + version: 0.0.2 + postcss: + specifier: ^8 + version: 8.5.1 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.17(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + ts-jest: + specifier: ^29.1.2 + version: 29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)))(typescript@5.7.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3) + ts-node-dev: + specifier: ^2.0.0 + version: 2.0.0(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3) + typescript: + specifier: ^5 + version: 5.7.3 + + ../../engine/language_client_typescript: + dependencies: + '@scarf/scarf': + specifier: ^1.3.0 + version: 1.4.0 + devDependencies: + '@biomejs/biome': + specifier: ^1.7.3 + version: 1.9.4 + '@napi-rs/cli': + specifier: 3.0.0-alpha.62 + version: 3.0.0-alpha.62(@emnapi/runtime@1.3.1) + '@types/node': + specifier: ^20.12.11 + version: 20.17.17 + npm-run-all2: + specifier: ^6.1.2 + version: 6.2.6 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3) + typescript: + specifier: ^5.4.5 + version: 5.7.3 + + ../../engine/language_client_typescript/npm/darwin-arm64: {} + + ../../engine/language_client_typescript/npm/darwin-x64: {} + + ../../engine/language_client_typescript/npm/linux-arm64-musl: {} + + ../../engine/language_client_typescript/npm/linux-x64-gnu: {} + + ../../engine/language_client_typescript/npm/linux-x64-musl: {} + + ../../engine/language_client_typescript/npm/win32-x64-msvc: {} + + ../../typescript/nextjs-plugin: + dependencies: + react: + specifier: '*' + version: 19.0.0 + devDependencies: + '@biomejs/biome': + specifier: ^1.9.4 + version: 1.9.4 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^22.10.6 + version: 22.13.1 + '@types/react': + specifier: ^19.0.6 + version: 19.0.8 + '@types/webpack': + specifier: ^5.28.5 + version: 5.28.5(@swc/core@1.10.14(@swc/helpers@0.5.15)) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + next: + specifier: ^15.1.4 + version: 15.1.6(@babel/core@7.26.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + typescript: + specifier: ^5.7.3 + version: 5.7.3 + webpack: + specifier: ^5.97.1 + version: 5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15)) + +packages: + + '@adobe/css-tools@4.4.1': + resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.7': + resolution: {integrity: sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.7': + resolution: {integrity: sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.7': + resolution: {integrity: sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.26.7': + resolution: {integrity: sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.26.7': + resolution: {integrity: sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.7': + resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@biomejs/biome@1.9.4': + resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.9.4': + resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.9.4': + resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.9.4': + resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.9.4': + resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.9.4': + resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.9.4': + resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.9.4': + resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.9.4': + resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@emnapi/core@1.3.1': + resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.19.0': + resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/react-dom@2.1.2': + resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@inquirer/checkbox@2.5.0': + resolution: {integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==} + engines: {node: '>=18'} + + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/editor@2.2.0': + resolution: {integrity: sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==} + engines: {node: '>=18'} + + '@inquirer/expand@2.3.0': + resolution: {integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.10': + resolution: {integrity: sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==} + engines: {node: '>=18'} + + '@inquirer/input@2.3.0': + resolution: {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} + engines: {node: '>=18'} + + '@inquirer/number@1.1.0': + resolution: {integrity: sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==} + engines: {node: '>=18'} + + '@inquirer/password@2.2.0': + resolution: {integrity: sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==} + engines: {node: '>=18'} + + '@inquirer/prompts@5.5.0': + resolution: {integrity: sha512-BHDeL0catgHdcHbSFFUddNzvx/imzJMft+tWDPwTm3hfu8/tApk1HrooNngB2Mb4qY+KaRWF+iZqoVUPeslEog==} + engines: {node: '>=18'} + + '@inquirer/rawlist@2.3.0': + resolution: {integrity: sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==} + engines: {node: '>=18'} + + '@inquirer/search@1.1.0': + resolution: {integrity: sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==} + engines: {node: '>=18'} + + '@inquirer/select@2.5.0': + resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} + engines: {node: '>=18'} + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@napi-rs/cli@3.0.0-alpha.62': + resolution: {integrity: sha512-IDUwHAEJZ9ad/s5oyhznrz5ZDcU+SJ6GdP5nb++Wx5MkS4FD9MeS3HfNZdsxkf10pOUPnmvCVFuG4xnLBQYmjw==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + '@emnapi/runtime': ^1.1.0 + emnapi: ^1.1.0 + peerDependenciesMeta: + '@emnapi/runtime': + optional: true + emnapi: + optional: true + + '@napi-rs/cross-toolchain@0.0.16': + resolution: {integrity: sha512-jwdjHT5L0m9MH0CmzDwPp0ckn/UO7afHCsPeo7NugHUvYgvlgS7SWhdMVgIgJW2HHqhcW/2nhaLLGpAU1c7QRQ==} + peerDependencies: + '@napi-rs/cross-toolchain-arm64-target-aarch64': ^0.0.16 + '@napi-rs/cross-toolchain-arm64-target-armv7': ^0.0.16 + '@napi-rs/cross-toolchain-arm64-target-x86_64': ^0.0.16 + '@napi-rs/cross-toolchain-x64-target-aarch64': ^0.0.16 + '@napi-rs/cross-toolchain-x64-target-armv7': ^0.0.16 + '@napi-rs/cross-toolchain-x64-target-x86_64': ^0.0.16 + peerDependenciesMeta: + '@napi-rs/cross-toolchain-arm64-target-aarch64': + optional: true + '@napi-rs/cross-toolchain-arm64-target-armv7': + optional: true + '@napi-rs/cross-toolchain-arm64-target-x86_64': + optional: true + '@napi-rs/cross-toolchain-x64-target-aarch64': + optional: true + '@napi-rs/cross-toolchain-x64-target-armv7': + optional: true + '@napi-rs/cross-toolchain-x64-target-x86_64': + optional: true + + '@napi-rs/lzma-android-arm-eabi@1.4.1': + resolution: {integrity: sha512-yenreSpZ9IrqppJOiWDqWMmja7XtSgio9LhtxYwgdILmy/OJTe/mlTYv+FhJBf7hIV9Razu5eBuEa3zKri81IA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/lzma-android-arm64@1.4.1': + resolution: {integrity: sha512-piutVBz5B1TNxXeEjub0n/IKI6dMaXPPRbVSXuc4gnZgzcihNDUh68vcLZgYd+IMiACZvBxvx2O3t5nthtph3A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/lzma-darwin-arm64@1.4.1': + resolution: {integrity: sha512-sDfOhQQFqV8lGbpgJN9DqNLBPR7QOfYjcWUv8FOGPaVP1LPJDnrc5uCpRWWEa2zIKmTiO8P9xzIl0TDzrYmghg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/lzma-darwin-x64@1.4.1': + resolution: {integrity: sha512-S5/RbC6EP4QkYy2xhxbfm48ZD9FkysfpWY4Slve0nj5RGGsHvcJBg2Pi69jrTPB/zLKz2SUa0i+RfUt9zvZNaw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/lzma-freebsd-x64@1.4.1': + resolution: {integrity: sha512-4AFnq6aZnclwameSBkDWu5Ftb8y4GwvVXeQXJKbN7hf7O5GG/8QpQB1R1NJw2QORUhpKwjAQUpbkTyhL2GFWWw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/lzma-linux-arm-gnueabihf@1.4.1': + resolution: {integrity: sha512-j5rL1YRIm6rWmmGAvN6DPX6QuRjvFGB93xJ7DTRB47GXW4zHekXae6ivowjJ95vT4Iz4hSWkZbuwAy95eFrWRA==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/lzma-linux-arm64-gnu@1.4.1': + resolution: {integrity: sha512-1XdFGKyTS9m+VrRQYs9uz+ToHf4Jwm0ejHU48k9lT9MPl8jSqzKdVtFzZBPzronHteSynBfKmUq0+HeWmjrsOQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/lzma-linux-arm64-musl@1.4.1': + resolution: {integrity: sha512-9d09tYS0/rBwIk1QTcO2hMZEB/ZpsG2+uFW5am1RHElSWMclObirB1An7b6AMDJcRvcomkOg2GZ9COzrvHKwEA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/lzma-linux-ppc64-gnu@1.4.1': + resolution: {integrity: sha512-UzEkmsgoJ3IOGIRb6kBzNiw+ThUpiighop7dVYfSqlF5juGzwf7YewC57RGn4FoJCvadOCrSm5VikAcgrwVgAw==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + + '@napi-rs/lzma-linux-riscv64-gnu@1.4.1': + resolution: {integrity: sha512-9dUKlZ1PdwxTaFF+j3oc+xjlk9nqFwo1NWWOH30uwjl4Rm5Gkv+Fx0pHrzu4kR/iVA+oyQqa9/2uDYnGSTijBA==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/lzma-linux-s390x-gnu@1.4.1': + resolution: {integrity: sha512-MOVXUWJSLLCJDCCAlGa39sh7nv9XjvXzCf7QJus7rD8Ciz0mpXNXF9mg0ji7/MZ7pZlKPlXjXDnpVCfFdSEaFQ==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + + '@napi-rs/lzma-linux-x64-gnu@1.4.1': + resolution: {integrity: sha512-Sxu7aJxU1sDbUTqjqLVDV3DCOAlbsFKvmuCN/S5uXBJd1IF2wJ9jK3NbFzfqTAo5Hudx8Y7kOb6+3K+fYPI1KQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/lzma-linux-x64-musl@1.4.1': + resolution: {integrity: sha512-4I3BeKBQJSE5gF2/VTEv7wCLLjhapeutbCGpZPmDiLHZ74rm9edmNXAlKpdjADQ4YDLJ2GIBzttvwLXkJ9U+cw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/lzma-wasm32-wasi@1.4.1': + resolution: {integrity: sha512-s32HdKqQWbohf6DGWpG9YMODaBdbKJ++JpNr6Ii7821sKf4h/o+p8IRFTOaWdmdJdllEWlRirnd5crA29VivJQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@napi-rs/lzma-win32-arm64-msvc@1.4.1': + resolution: {integrity: sha512-ISz+v7ML5mKnjEZ7Kk4Z1BIn411r/fz3tDy9j5yDnwQI0MgTsUQFrIQElGUpULWYs2aYc6EZ9PhECbLBfSjh7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/lzma-win32-ia32-msvc@1.4.1': + resolution: {integrity: sha512-3WKuCpZBrd7Jrw+h1jSu5XAsRWepMJu0sYuRoA4Y4Cwfu9gI7p5Z5Bc510nfjg7M7xvdpkI4UoW2WY7kBFRYrQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/lzma-win32-x64-msvc@1.4.1': + resolution: {integrity: sha512-0ixRo5z1zFXdh62hlrTV+QCTKHK0te5NHKaExOluhtcc6AdpMmpslvM9JhUxNHI+zM46w/DmmcvcOtqsaTmHgg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/lzma@1.4.1': + resolution: {integrity: sha512-5f8K9NHjwHjZKGm3SS+7CFxXQhz8rbg2umBm/9g0xQRXBdYEI31N5z1ACuk9bmBQOusXAq9CArGfs/ZQso2rUA==} + engines: {node: '>= 10'} + + '@napi-rs/tar-android-arm-eabi@0.1.4': + resolution: {integrity: sha512-LMSysWp5AmZj1NOCB2jshc9KCvp4gm7vm0Cra5U2crMvlj/fwGrvv6+EzSw49y8wCkNEcQ8QaGq5NBQKiLogSg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/tar-android-arm64@0.1.4': + resolution: {integrity: sha512-A/2rl8xr7F5yOtHVARROoSwjRRDNL1RlXCsg/K+RE5/V9iPBojsJsLpFPilp7InF6bi+z7aYn+yWCD6wSwfF4A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/tar-darwin-arm64@0.1.4': + resolution: {integrity: sha512-mnGBswBRtxDqUwXUZx+f9Uuy2uPssxuvcWFTYgUSZqlS2pg/XIWZdHZhbqWqKGpjpZrYcr+42roytbWlZ+epMA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/tar-darwin-x64@0.1.4': + resolution: {integrity: sha512-I81Fvl/cfnFVBET49xywNd57dXLJPO7jqrjD9Z2bKeXA0v0Zt1cwV1IOOTihFZXJv7kgu6EfNB7oumoLOTqq5A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/tar-freebsd-x64@0.1.4': + resolution: {integrity: sha512-p5OFr3MqidZHkt9bHV2FgeS6k06g+s0GR2kvj/wm2mIxr7u3/sj3+RTr7GHz5DQq08T7uH85HhsrGYWN3vxmSg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/tar-linux-arm-gnueabihf@0.1.4': + resolution: {integrity: sha512-POp2zb/Yuw6taEmrTlEoQI5S+2HmgfV1VtqGQZgRmCa85NlWLDsR6vbW9euu/6NbLj3ld15cCeJC2oJkv9k/xg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/tar-linux-arm64-gnu@0.1.4': + resolution: {integrity: sha512-TV+2AppSgJx5U9nk1C9bh1afWcBVnnANJ4SmtqUF6ediHcDS2rLebeI8BGljfnX9F149qbT9gOGN+R8tofpCsg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/tar-linux-arm64-musl@0.1.4': + resolution: {integrity: sha512-UFBvKpYmuQRbgmXuSSPb8mRjq4JRZLYJhqwrWWnlfQP13xK2WB7mL2GhewBgynSH4YKDm6biKhK6U5RrSWEDgw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/tar-linux-ppc64-gnu@0.1.4': + resolution: {integrity: sha512-HT+h6Wv51SKXqks8UBF+KVuNJ09fM1GyO+SvCnDB5MF66tGiI2C6/MSX69zf1ZeqjACds1K/UwKiZCmE76/j9A==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + + '@napi-rs/tar-linux-s390x-gnu@0.1.4': + resolution: {integrity: sha512-SJ+HSr281Y6cgJrQ4nkYbXaTHAmTLv/FZm5k9ZRA6Khml//ZoWi7CiT8dnPeD4QxYwCzAFA4aYMUOQJM/mk2/w==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + + '@napi-rs/tar-linux-x64-gnu@0.1.4': + resolution: {integrity: sha512-LrF0lRFiFOkO40jfgTdF8dRTvYOLV52fdZ/YnJuBodNcxqEl9rChO3v5Uag//sy0me85FjqtobQNRQP8Nd80dA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/tar-linux-x64-musl@0.1.4': + resolution: {integrity: sha512-etGUWbs+Tk1PtzgyWrVzXa2fQrHNKSc/whHm+4x1Num8Oz+wGdjCDTUktYxAVy33PKZhdblVxxE83QXxkgjneQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/tar-wasm32-wasi@0.1.4': + resolution: {integrity: sha512-mANkm93AKy+OspkOBAC5WI64SopXT0VawdTjpeGW1OgyUSJWdUB5rhs3I7B/HW1bi5tsUoZOZQe3rVgYdfzA6g==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@napi-rs/tar-win32-arm64-msvc@0.1.4': + resolution: {integrity: sha512-/5/gp6WR9b36CysJDe8AdyjNeje+NqCniYJz/AZc+UvpKwG8MG9nS6TMpJ9IgrQacJXvc4lWXxYyn6uuPQVvaQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/tar-win32-ia32-msvc@0.1.4': + resolution: {integrity: sha512-HnQi0op9BqJqPekKXhEAI1TWkLtavxKDBDGXNhUSm2//jriMeRykahUcKoUUxr1UGrmtxpc5dx0cThBt13paEw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/tar-win32-x64-msvc@0.1.4': + resolution: {integrity: sha512-vy2ebEXerblni6XOgi3a27+CnI6PdQ9Phy/ru5HM4bVd/oulAJohmynAmBAB1AmXg1NLbAEWu43nATEDp5O2hA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/tar@0.1.4': + resolution: {integrity: sha512-hDsvmMZY8tl2CcLfjnTeE1o5W1eGTSL+ZIX8YEybtcJwA+Cc8SNHb7l6JqMnGcjOrWBZbHt8tzTN+W7qHS5Wmg==} + engines: {node: '>= 10'} + + '@napi-rs/wasm-runtime@0.2.6': + resolution: {integrity: sha512-z8YVS3XszxFTO73iwvFDNpQIzdMmSDTP/mB3E/ucR37V3Sx57hSExcXyMoNwaucWxnsWf4xfbZv0iZ30jr0M4Q==} + + '@napi-rs/wasm-tools-android-arm-eabi@0.0.2': + resolution: {integrity: sha512-/b+UU3suXjW4P0DzHRNdrnebQtFKcQf/YMeZJH+xUlKgvwli5kbmWjx8Wqqz0VETVkUTuPqJMBDIVLyc+14FGw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/wasm-tools-android-arm64@0.0.2': + resolution: {integrity: sha512-j57GbDflwJdZtT8pZj5fOV4JAP+LdKN+wzsUYs+QRUoBqpWbbUANudolqfw63bkS9sD4z7fbCuz8iwtJqzxTVA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/wasm-tools-darwin-arm64@0.0.2': + resolution: {integrity: sha512-P2ChgWgVuv9GwmbxN89R84KzIImoTqXINteEixUvmkdnhyFiR+I8deNs89Yed+5w8QLC6MEfrtRqLP9YI+NoQA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/wasm-tools-darwin-x64@0.0.2': + resolution: {integrity: sha512-T/kQQ0gt8+wau1Z821PKVAD76QhmwVoLs2CT7Z9tTBs2pJvwSCP0C/kQiQAHcJIMi7A2E9Ab/Mez0BERy50EFA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/wasm-tools-freebsd-x64@0.0.2': + resolution: {integrity: sha512-GnnHu+r5sfzuxC/1J5UMF/h3BOZnHb3NQZ5hmbCfZYCKzpzRxrAJhzRunlbRN+v0x8M/49dztVTYR3s7K4ooAw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/wasm-tools-linux-arm64-gnu@0.0.2': + resolution: {integrity: sha512-KnZdLT0OnKb1CG2kdt3/WvM43vr9i+FEwXCvSOVC/6Tsifz7ynhMg7LAVESILd03HubzQJfg9nbRsk0bQ+IOwg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/wasm-tools-linux-arm64-musl@0.0.2': + resolution: {integrity: sha512-HkpZOID2U8P6pWqK3mqZ8bxU5xcuT3iA2fO+jrxn78h006iYgfNmdc5JaVhHnHazMmk32xKhSV4iV0VUh8UWDg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/wasm-tools-linux-x64-gnu@0.0.2': + resolution: {integrity: sha512-YksJWBCyOalB9ogtP9+/dZKP+vR6+h7BmzMXaXMT71WW/GvIsifMVgv+DY/FRSNJQupp5Y+ugjqVAOUOc/G65g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/wasm-tools-linux-x64-musl@0.0.2': + resolution: {integrity: sha512-sPtRxPMdw05KdTcxgSPMmSXG2+PiK3vJ/l2+g9hvjnnKtvslJN2Hr7j8zgzuoKRAUFPaJVe6+D2xVh5cpdqhww==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/wasm-tools-wasm32-wasi@0.0.2': + resolution: {integrity: sha512-muRvZK7AIuo88G2AxYx3gA59rHMQgoN004saQkBvXnz3K/DVHKfTZ6TtUebss8zI3dURU6xExL8drxFWYxjEbQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@napi-rs/wasm-tools-win32-arm64-msvc@0.0.2': + resolution: {integrity: sha512-Cn13WQ+tpFqdVwx0DIWKbsI9auFyzVZV4F5UNOUeDt6GgOL+NndgJul0Pc9bSU6fi03AylMPfF/nTCaDWO2Wgw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/wasm-tools-win32-ia32-msvc@0.0.2': + resolution: {integrity: sha512-xsg5DkIQi82a8rcx6246Y3XC8TIqHamY+/C6sIlPLaZEuHctDkMECAw0AANwRf5vN//D2oo2oljOuoYtB1GOKw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/wasm-tools-win32-x64-msvc@0.0.2': + resolution: {integrity: sha512-yHigltEt33eq8bappvKsIliz4MxfMPn1M+NWbIFRWN+IS1Z57mhmc1osuk+IRXrSlq0Tom0R6MYN1jpkZKz81Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/wasm-tools@0.0.2': + resolution: {integrity: sha512-kBvDQCP5BLw2TxTENXLp3Of7vVEx0uyIye824JHE4dduzzOHVgSoOFVhVqAT3Fx/hLV445RVWfEqQbXMg4w/Mw==} + engines: {node: '>= 10'} + + '@next/env@15.1.6': + resolution: {integrity: sha512-d9AFQVPEYNr+aqokIiPLNK/MTyt3DWa/dpKveiAaVccUadFbhFEvY6FXYX2LJO2Hv7PHnLBu2oWwB4uBuHjr/w==} + + '@next/eslint-plugin-next@15.1.6': + resolution: {integrity: sha512-+slMxhTgILUntZDGNgsKEYHUvpn72WP1YTlkmEhS51vnVd7S9jEEy0n9YAMcI21vUG4akTw9voWH02lrClt/yw==} + + '@next/swc-darwin-arm64@15.1.6': + resolution: {integrity: sha512-u7lg4Mpl9qWpKgy6NzEkz/w0/keEHtOybmIl0ykgItBxEM5mYotS5PmqTpo+Rhg8FiOiWgwr8USxmKQkqLBCrw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@15.1.6': + resolution: {integrity: sha512-x1jGpbHbZoZ69nRuogGL2MYPLqohlhnT9OCU6E6QFewwup+z+M6r8oU47BTeJcWsF2sdBahp5cKiAcDbwwK/lg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@15.1.6': + resolution: {integrity: sha512-jar9sFw0XewXsBzPf9runGzoivajeWJUc/JkfbLTC4it9EhU8v7tCRLH7l5Y1ReTMN6zKJO0kKAGqDk8YSO2bg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@15.1.6': + resolution: {integrity: sha512-+n3u//bfsrIaZch4cgOJ3tXCTbSxz0s6brJtU3SzLOvkJlPQMJ+eHVRi6qM2kKKKLuMY+tcau8XD9CJ1OjeSQQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@15.1.6': + resolution: {integrity: sha512-SpuDEXixM3PycniL4iVCLyUyvcl6Lt0mtv3am08sucskpG0tYkW1KlRhTgj4LI5ehyxriVVcfdoxuuP8csi3kQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@15.1.6': + resolution: {integrity: sha512-L4druWmdFSZIIRhF+G60API5sFB7suTbDRhYWSjiw0RbE+15igQvE2g2+S973pMGvwN3guw7cJUjA/TmbPWTHQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@15.1.6': + resolution: {integrity: sha512-s8w6EeqNmi6gdvM19tqKKWbCyOBvXFbndkGHl+c9YrzsLARRdCHsD9S1fMj8gsXm9v8vhC8s3N8rjuC/XrtkEg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@15.1.6': + resolution: {integrity: sha512-6xomMuu54FAFxttYr5PJbEfu96godcxBTRk1OhAvJq0/EnmFU/Ybiax30Snis4vdWZ9LGpf7Roy5fSs7v/5ROQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@octokit/auth-token@5.1.2': + resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} + engines: {node: '>= 18'} + + '@octokit/core@6.1.3': + resolution: {integrity: sha512-z+j7DixNnfpdToYsOutStDgeRzJSMnbj8T1C/oQjB6Aa+kRfNjs/Fn7W6c8bmlt6mfy3FkgeKBRnDjxQow5dow==} + engines: {node: '>= 18'} + + '@octokit/endpoint@10.1.2': + resolution: {integrity: sha512-XybpFv9Ms4hX5OCHMZqyODYqGTZ3H6K6Vva+M9LR7ib/xr1y1ZnlChYv9H680y77Vd/i/k+thXApeRASBQkzhA==} + engines: {node: '>= 18'} + + '@octokit/graphql@8.2.0': + resolution: {integrity: sha512-gejfDywEml/45SqbWTWrhfwvLBrcGYhOn50sPOjIeVvH6i7D16/9xcFA8dAJNp2HMcd+g4vru41g4E2RBiZvfQ==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@23.0.1': + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} + + '@octokit/plugin-paginate-rest@11.4.0': + resolution: {integrity: sha512-ttpGck5AYWkwMkMazNCZMqxKqIq1fJBNxBfsFwwfyYKTf914jKkLF0POMS3YkPBwp5g1c2Y4L79gDz01GhSr1g==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-request-log@5.3.1': + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@13.3.0': + resolution: {integrity: sha512-LUm44shlmkp/6VC+qQgHl3W5vzUP99ZM54zH6BuqkJK4DqfFLhegANd+fM4YRLapTvPm4049iG7F3haANKMYvQ==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/request-error@6.1.6': + resolution: {integrity: sha512-pqnVKYo/at0NuOjinrgcQYpEbv4snvP3bKMRqHaD9kIsk9u1LCpb2smHZi8/qJfgeNqLo5hNW4Z7FezNdEo0xg==} + engines: {node: '>= 18'} + + '@octokit/request@9.2.0': + resolution: {integrity: sha512-kXLfcxhC4ozCnAXy2ff+cSxpcF0A1UqxjvYMqNuPIeOAzJbVWQ+dy5G2fTylofB/gTbObT8O6JORab+5XtA1Kw==} + engines: {node: '>= 18'} + + '@octokit/rest@21.1.0': + resolution: {integrity: sha512-93iLxcKDJboUpmnUyeJ6cRIi7z7cqTZT1K7kRK4LobGxwTwpsa+2tQQbRQNGy7IFDEAmrtkf4F4wBj3D5rVlJQ==} + engines: {node: '>= 18'} + + '@octokit/types@13.8.0': + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@radix-ui/primitive@1.1.1': + resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} + + '@radix-ui/react-arrow@1.1.1': + resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-collection@1.1.1': + resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-compose-refs@1.1.1': + resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.1': + resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.4': + resolution: {integrity: sha512-XDUI0IVYVSwjMXxM6P4Dfti7AH+Y4oS/TB+sglZ/EXc7cqLwGAmp1NlMrcUjj7ks6R5WTZuWKv44FBbLpwU3sA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dropdown-menu@2.1.5': + resolution: {integrity: sha512-50ZmEFL1kOuLalPKHrLWvPFMons2fGx9TqQCWlPwDVpbAnaUJ1g4XNcKqFNMQymYU0kKWR4MDDi+9vUQBGFgcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.1': + resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.1': + resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-label@2.1.1': + resolution: {integrity: sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-menu@2.1.5': + resolution: {integrity: sha512-uH+3w5heoMJtqVCgYOtYVMECk1TOrkUn0OG0p5MqXC0W2ppcuVeESbou8PTHoqAjbdTEK19AGXBWcEtR5WpEQg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-popper@1.2.1': + resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-portal@1.1.3': + resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.2': + resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.1': + resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-progress@1.1.1': + resolution: {integrity: sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-roving-focus@1.1.1': + resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.1': + resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-switch@1.1.2': + resolution: {integrity: sha512-zGukiWHjEdBCRyXvKR6iXAQG6qXm2esuAD6kDOi9Cn+1X6ev3ASo4+CsYaD6Fov9r/AQFekqnD/7+V0Cs6/98g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-tabs@1.1.2': + resolution: {integrity: sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.1.0': + resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.1.0': + resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/rect@1.1.0': + resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.5': + resolution: {integrity: sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==} + + '@scarf/scarf@1.4.0': + resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@swc/core-darwin-arm64@1.10.14': + resolution: {integrity: sha512-Dh4VyrhDDb05tdRmqJ/MucOPMTnrB4pRJol18HVyLlqu1HOT5EzonUniNTCdQbUXjgdv5UVJSTE1lYTzrp+myA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.10.14': + resolution: {integrity: sha512-KpzotL/I0O12RE3tF8NmQErINv0cQe/0mnN/Q50ESFzB5kU6bLgp2HMnnwDTm/XEZZRJCNe0oc9WJ5rKbAJFRQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.10.14': + resolution: {integrity: sha512-20yRXZjMJVz1wp1TcscKiGTVXistG+saIaxOmxSNQia1Qun3hSWLL+u6+5kXbfYGr7R2N6kqSwtZbIfJI25r9Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.10.14': + resolution: {integrity: sha512-Gy7cGrNkiMfPxQyLGxdgXPwyWzNzbHuWycJFcoKBihxZKZIW8hkPBttkGivuLC+0qOgsV2/U+S7tlvAju7FtmQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.10.14': + resolution: {integrity: sha512-+oYVqJvFw62InZ8PIy1rBACJPC2WTe4vbVb9kM1jJj2D7dKLm9acnnYIVIDsM5Wo7Uab8RvPHXVbs19IBurzuw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.10.14': + resolution: {integrity: sha512-OmEbVEKQFLQVHwo4EJl9osmlulURy46k232Opfpn/1ji0t2KcNCci3POsnfMuoZjLkGJv8vGNJdPQxX+CP+wSA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.10.14': + resolution: {integrity: sha512-OZW+Icm8DMPqHbhdxplkuG8qrNnPk5i7xJOZWYi1y5bTjgGFI4nEzrsmmeHKMdQTaWwsFrm3uK1rlyQ48MmXmg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.10.14': + resolution: {integrity: sha512-sTvc+xrDQXy3HXZFtTEClY35Efvuc3D+busYm0+rb1+Thau4HLRY9WP+sOKeGwH9/16rzfzYEqD7Ds8A9ykrHw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.10.14': + resolution: {integrity: sha512-j2iQ4y9GWTKtES5eMU0sDsFdYni7IxME7ejFej25Tv3Fq4B+U9tgtYWlJwh1858nIWDXelHiKcSh/UICAyVMdQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.10.14': + resolution: {integrity: sha512-TYtWkUSMkjs0jGPeWdtWbex4B+DlQZmN/ySVLiPI+EltYCLEXsFMkVFq6aWn48dqFHggFK0UYfvDrJUR2c3Qxg==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.10.14': + resolution: {integrity: sha512-WSrnE6JRnH20ZYjOOgSS4aOaPv9gxlkI2KRkN24kagbZnPZMnN8bZZyzw1rrLvwgpuRGv17Uz+hflosbR+SP6w==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@swc/jest@0.2.37': + resolution: {integrity: sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' + + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@6.6.3': + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react-hooks@8.0.1': + resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} + engines: {node: '>=12'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 + react-dom: ^16.9.0 || ^17.0.0 + react-test-renderer: ^16.9.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-dom: + optional: true + react-test-renderer: + optional: true + + '@testing-library/react@16.2.0': + resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + + '@types/node@20.17.17': + resolution: {integrity: sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg==} + + '@types/node@22.13.1': + resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} + + '@types/react-dom@19.0.3': + resolution: {integrity: sha512-0Knk+HJiMP/qOZgMyNFamlIjw9OFCsyC2ZbigmEEyXXixgre6IQpm/4V+r3qH4GC1JPvRJKInw+on2rV6YZLeA==} + peerDependencies: + '@types/react': ^19.0.0 + + '@types/react@19.0.8': + resolution: {integrity: sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/strip-bom@3.0.0': + resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} + + '@types/strip-json-comments@0.0.30': + resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/webpack@5.28.5': + resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} + + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@8.23.0': + resolution: {integrity: sha512-vBz65tJgRrA1Q5gWlRfvoH+w943dq9K1p1yDBY2pc+a1nbBLZp7fB9+Hk8DaALUbzjqlMfgaqlVPT1REJdkt/w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/parser@8.23.0': + resolution: {integrity: sha512-h2lUByouOXFAlMec2mILeELUbME5SZRN/7R9Cw2RD2lRQQY08MWMM+PmVVKKJNK1aIwqTo9t/0CvOxwPbRIE2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/scope-manager@8.23.0': + resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.23.0': + resolution: {integrity: sha512-iIuLdYpQWZKbiH+RkCGc6iu+VwscP5rCtQ1lyQ7TYuKLrcZoeJVpcLiG8DliXVkUxirW/PWlmS+d6yD51L9jvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/types@8.23.0': + resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.23.0': + resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.23.0': + resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.23.0': + resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@webassemblyjs/ast@1.14.1': + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} + + '@webassemblyjs/floating-point-hex-parser@1.13.2': + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} + + '@webassemblyjs/helper-api-error@1.13.2': + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} + + '@webassemblyjs/helper-buffer@1.14.1': + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} + + '@webassemblyjs/helper-numbers@1.13.2': + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} + + '@webassemblyjs/helper-wasm-section@1.14.1': + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} + + '@webassemblyjs/ieee754@1.13.2': + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} + + '@webassemblyjs/leb128@1.13.2': + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} + + '@webassemblyjs/utf8@1.13.2': + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} + + '@webassemblyjs/wasm-edit@1.14.1': + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} + + '@webassemblyjs/wasm-gen@1.14.1': + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} + + '@webassemblyjs/wasm-opt@1.14.1': + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} + + '@webassemblyjs/wasm-parser@1.14.1': + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} + + '@webassemblyjs/wast-printer@1.14.1': + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001697: + resolution: {integrity: sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipanion@3.2.1: + resolution: {integrity: sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA==} + peerDependencies: + typanion: '*' + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dateformat@3.0.2: + resolution: {integrity: sha512-EelsCzH0gMC2YmXuMeaZ3c6md1sUJQxyb1XXc4xaisi/K6qKukqZhKPrEQyRkdNIncgYyLoDTReq0nNyuKerTg==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decimal.js@10.5.0: + resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + dotenv-cli@7.4.4: + resolution: {integrity: sha512-XkBYCG0tPIes+YZr4SpfFv76SQrV/LeCE8CI7JSEMi3VR9MvTihCGTOtbIexD6i2mXF+6px7trb1imVCXSNMDw==} + hasBin: true + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + dynamic-dedupe@0.3.0: + resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.92: + resolution: {integrity: sha512-BeHgmNobs05N1HMmMZ7YIuHfYBGlq/UmvlsTgg+fsbFs9xVMj+xJHFg19GN04+9Q+r8Xnh9LXqaYIyEWElnNgQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.2.1: + resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-next@15.1.6: + resolution: {integrity: sha512-Wd1uy6y7nBbXUSg9QAuQ+xYEKli5CgUhLjz1QHW11jLDis5vK5XB3PemL6jEmy7HrdhaRFDz+GTZ/3FoH+EUjg==} + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 || ^9.0.0 + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.7.0: + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@5.1.0: + resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.4: + resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.19.0: + resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + + for-each@0.3.4: + resolution: {integrity: sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inquirer@10.2.2: + resolution: {integrity: sha512-tyao/4Vo36XnUItZ7DnUXX4f1jVao2mSrleV/5IPtW/XAEA26hRVsbc68nuTEKWcr5vMP/1mVoT2O7u8H4v1Vg==} + engines: {node: '>=18'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@1.3.0: + resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-html-reporter@3.10.2: + resolution: {integrity: sha512-XRBa5ylHPUQoo8aJXEEdKsTruieTdlPbRktMx9WG9evMTxzJEKGFMaw5x+sQxJuClWdNR72GGwbOaz+6HIlksA==} + engines: {node: '>=4.8.3'} + peerDependencies: + jest: 19.x - 29.x + typescript: ^3.7.x || ^4.3.x || ^5.x + + jest-junit@16.0.0: + resolution: {integrity: sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==} + engines: {node: '>=10.12.0'} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-summary-reporter@0.0.2: + resolution: {integrity: sha512-rZ3ThO57l+ZJCxF74cXIGQU3cV9I7bSBe1ElBp0taE3x2JghgD69bNCKt0LvpVQX5azTRHG7LmcjIpwriVnTng==} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lucide-react@0.471.2: + resolution: {integrity: sha512-A8fDycQxGeaSOTaI7Bm4fg8LBXO7Qr9ORAX47bDRvugCsjLIliugQO0PkKFoeAD57LIQwlWKd3NIQ3J7hYp84g==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-themes@0.4.4: + resolution: {integrity: sha512-LDQ2qIOJF0VnuVrrMSMLrWGjRMkq+0mpgl6e0juCLqdJ+oo8Q84JRWT6Wh11VDQKkMMe+dVzDKLWs5n87T+PkQ==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + + next@15.1.6: + resolution: {integrity: sha512-Hch4wzbaX0vKQtalpXvUiw5sYivBy4cm5rzUKrBnUB/y436LGrvOUqYvlSeNVCWFO/770gDlltR9gqZH62ct4Q==} + engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-run-all2@6.2.6: + resolution: {integrity: sha512-tkyb4pc0Zb0oOswCb5tORPk9MvVL6gcDq1cMItQHmsbVk1skk7YF6cH+UU2GxeNLHMuk6wFEOSmEmJ2cnAK1jg==} + engines: {node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.0.1: + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} + peerDependencies: + react: ^19.0.0 + + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.6.3: + resolution: {integrity: sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.3.0: + resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} + engines: {node: '>= 10.13.0'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + sonner@1.7.4: + resolution: {integrity: sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} + engines: {node: '>=14.0.0'} + hasBin: true + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + terser-webpack-plugin@5.3.11: + resolution: {integrity: sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@5.38.0: + resolution: {integrity: sha512-a4GD5R1TjEeuCT6ZRiYMHmIf7okbCPEuhQET8bczV6FrQMMlFXA1n+G0KKjdlFCm3TEHV77GxfZB3vZSUQGFpg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toml@3.0.0: + resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@29.2.5: + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-node-dev@2.0.0: + resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} + engines: {node: '>=0.8.0'} + hasBin: true + peerDependencies: + node-notifier: '*' + typescript: '*' + peerDependenciesMeta: + node-notifier: + optional: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig@7.0.0: + resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + typanion@3.14.0: + resolution: {integrity: sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + + universal-user-agent@7.0.2: + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wasm-sjlj@1.0.6: + resolution: {integrity: sha512-pjaKtLJejlWm6+okPV2X1A6nIsRDD4qeK97eCh8DP8KXi3Nzn/HY01vpHhZHlhDri12eZqipjm8HhdTVw+ATxw==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack@5.97.1: + resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.18: + resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml@1.0.1: + resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} + + xmlbuilder@15.0.0: + resolution: {integrity: sha512-KLu/G0DoWhkncQ9eHSI6s0/w+T4TM7rQaLhtCaL6tORv8jFlJPlnGumsgTcGfYeS1qZ/IHqrvDG7zJZ4d7e+nw==} + engines: {node: '>=8.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} + + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + + zsa-react@0.2.3: + resolution: {integrity: sha512-THCoIIhtEU3jXTrNBM/PBc0PyHCekizSGEc+fg0LGo1NM1J02LFQN7ICR948X25IjtkZdvxUZmT0+M73GG8eEw==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + zod: ^3.23.5 + + zsa@0.6.0: + resolution: {integrity: sha512-Pq3X4T0dna5s4dIevYOJiRdM3DUHRvEHS2q1AH/bvkPSh640u+9veVj5zmzmbL0A6cpXMYagwKsR4keGOc0jPQ==} + peerDependencies: + zod: ^3.23.5 + +snapshots: + + '@adobe/css-tools@4.4.1': {} + + '@alloc/quick-lru@5.2.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.5': {} + + '@babel/core@7.26.7': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.7) + '@babel/helpers': 7.26.7 + '@babel/parser': 7.26.7 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.26.5': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.26.5': + dependencies: + '@babel/compat-data': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.26.7 + '@babel/types': 7.26.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helpers@7.26.7': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.7 + + '@babel/parser@7.26.7': + dependencies: + '@babel/types': 7.26.7 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.7)': + dependencies: + '@babel/core': 7.26.7 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/runtime@7.26.7': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + + '@babel/traverse@7.26.7': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.7 + '@babel/template': 7.25.9 + '@babel/types': 7.26.7 + debug: 4.4.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.7': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@bcoe/v8-coverage@0.2.3': {} + + '@biomejs/biome@1.9.4': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.9.4 + '@biomejs/cli-darwin-x64': 1.9.4 + '@biomejs/cli-linux-arm64': 1.9.4 + '@biomejs/cli-linux-arm64-musl': 1.9.4 + '@biomejs/cli-linux-x64': 1.9.4 + '@biomejs/cli-linux-x64-musl': 1.9.4 + '@biomejs/cli-win32-arm64': 1.9.4 + '@biomejs/cli-win32-x64': 1.9.4 + + '@biomejs/cli-darwin-arm64@1.9.4': + optional: true + + '@biomejs/cli-darwin-x64@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-arm64@1.9.4': + optional: true + + '@biomejs/cli-linux-x64-musl@1.9.4': + optional: true + + '@biomejs/cli-linux-x64@1.9.4': + optional: true + + '@biomejs/cli-win32-arm64@1.9.4': + optional: true + + '@biomejs/cli-win32-x64@1.9.4': + optional: true + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@emnapi/core@1.3.1': + dependencies: + '@emnapi/wasi-threads': 1.0.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0(jiti@1.21.7))': + dependencies: + eslint: 9.19.0(jiti@1.21.7) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.2.0': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.19.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.5': + dependencies: + '@eslint/core': 0.10.0 + levn: 0.4.1 + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/dom': 1.6.13 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@floating-ui/utils@0.2.9': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.1': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.3.1 + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@inquirer/checkbox@2.5.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.10 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.10 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.13.1 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + '@inquirer/editor@2.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + external-editor: 3.1.0 + + '@inquirer/expand@2.3.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + yoctocolors-cjs: 2.1.2 + + '@inquirer/figures@1.0.10': {} + + '@inquirer/input@2.3.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/number@1.1.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/password@2.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + + '@inquirer/prompts@5.5.0': + dependencies: + '@inquirer/checkbox': 2.5.0 + '@inquirer/confirm': 3.2.0 + '@inquirer/editor': 2.2.0 + '@inquirer/expand': 2.3.0 + '@inquirer/input': 2.3.0 + '@inquirer/number': 1.1.0 + '@inquirer/password': 2.2.0 + '@inquirer/rawlist': 2.3.0 + '@inquirer/search': 1.1.0 + '@inquirer/select': 2.5.0 + + '@inquirer/rawlist@2.3.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + yoctocolors-cjs: 2.1.2 + + '@inquirer/search@1.1.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.10 + '@inquirer/type': 1.5.5 + yoctocolors-cjs: 2.1.2 + + '@inquirer/select@2.5.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.10 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.13.1 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.13.1 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.7 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.13.1 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@napi-rs/cli@3.0.0-alpha.62(@emnapi/runtime@1.3.1)': + dependencies: + '@napi-rs/cross-toolchain': 0.0.16 + '@napi-rs/wasm-tools': 0.0.2 + '@octokit/rest': 21.1.0 + clipanion: 3.2.1(typanion@3.14.0) + colorette: 2.0.20 + debug: 4.4.0 + inquirer: 10.2.2 + js-yaml: 4.1.0 + lodash-es: 4.17.21 + semver: 7.7.1 + toml: 3.0.0 + typanion: 3.14.0 + wasm-sjlj: 1.0.6 + optionalDependencies: + '@emnapi/runtime': 1.3.1 + transitivePeerDependencies: + - '@napi-rs/cross-toolchain-arm64-target-aarch64' + - '@napi-rs/cross-toolchain-arm64-target-armv7' + - '@napi-rs/cross-toolchain-arm64-target-x86_64' + - '@napi-rs/cross-toolchain-x64-target-aarch64' + - '@napi-rs/cross-toolchain-x64-target-armv7' + - '@napi-rs/cross-toolchain-x64-target-x86_64' + - supports-color + + '@napi-rs/cross-toolchain@0.0.16': + dependencies: + '@napi-rs/lzma': 1.4.1 + '@napi-rs/tar': 0.1.4 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + '@napi-rs/lzma-android-arm-eabi@1.4.1': + optional: true + + '@napi-rs/lzma-android-arm64@1.4.1': + optional: true + + '@napi-rs/lzma-darwin-arm64@1.4.1': + optional: true + + '@napi-rs/lzma-darwin-x64@1.4.1': + optional: true + + '@napi-rs/lzma-freebsd-x64@1.4.1': + optional: true + + '@napi-rs/lzma-linux-arm-gnueabihf@1.4.1': + optional: true + + '@napi-rs/lzma-linux-arm64-gnu@1.4.1': + optional: true + + '@napi-rs/lzma-linux-arm64-musl@1.4.1': + optional: true + + '@napi-rs/lzma-linux-ppc64-gnu@1.4.1': + optional: true + + '@napi-rs/lzma-linux-riscv64-gnu@1.4.1': + optional: true + + '@napi-rs/lzma-linux-s390x-gnu@1.4.1': + optional: true + + '@napi-rs/lzma-linux-x64-gnu@1.4.1': + optional: true + + '@napi-rs/lzma-linux-x64-musl@1.4.1': + optional: true + + '@napi-rs/lzma-wasm32-wasi@1.4.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.6 + optional: true + + '@napi-rs/lzma-win32-arm64-msvc@1.4.1': + optional: true + + '@napi-rs/lzma-win32-ia32-msvc@1.4.1': + optional: true + + '@napi-rs/lzma-win32-x64-msvc@1.4.1': + optional: true + + '@napi-rs/lzma@1.4.1': + optionalDependencies: + '@napi-rs/lzma-android-arm-eabi': 1.4.1 + '@napi-rs/lzma-android-arm64': 1.4.1 + '@napi-rs/lzma-darwin-arm64': 1.4.1 + '@napi-rs/lzma-darwin-x64': 1.4.1 + '@napi-rs/lzma-freebsd-x64': 1.4.1 + '@napi-rs/lzma-linux-arm-gnueabihf': 1.4.1 + '@napi-rs/lzma-linux-arm64-gnu': 1.4.1 + '@napi-rs/lzma-linux-arm64-musl': 1.4.1 + '@napi-rs/lzma-linux-ppc64-gnu': 1.4.1 + '@napi-rs/lzma-linux-riscv64-gnu': 1.4.1 + '@napi-rs/lzma-linux-s390x-gnu': 1.4.1 + '@napi-rs/lzma-linux-x64-gnu': 1.4.1 + '@napi-rs/lzma-linux-x64-musl': 1.4.1 + '@napi-rs/lzma-wasm32-wasi': 1.4.1 + '@napi-rs/lzma-win32-arm64-msvc': 1.4.1 + '@napi-rs/lzma-win32-ia32-msvc': 1.4.1 + '@napi-rs/lzma-win32-x64-msvc': 1.4.1 + + '@napi-rs/tar-android-arm-eabi@0.1.4': + optional: true + + '@napi-rs/tar-android-arm64@0.1.4': + optional: true + + '@napi-rs/tar-darwin-arm64@0.1.4': + optional: true + + '@napi-rs/tar-darwin-x64@0.1.4': + optional: true + + '@napi-rs/tar-freebsd-x64@0.1.4': + optional: true + + '@napi-rs/tar-linux-arm-gnueabihf@0.1.4': + optional: true + + '@napi-rs/tar-linux-arm64-gnu@0.1.4': + optional: true + + '@napi-rs/tar-linux-arm64-musl@0.1.4': + optional: true + + '@napi-rs/tar-linux-ppc64-gnu@0.1.4': + optional: true + + '@napi-rs/tar-linux-s390x-gnu@0.1.4': + optional: true + + '@napi-rs/tar-linux-x64-gnu@0.1.4': + optional: true + + '@napi-rs/tar-linux-x64-musl@0.1.4': + optional: true + + '@napi-rs/tar-wasm32-wasi@0.1.4': + dependencies: + '@napi-rs/wasm-runtime': 0.2.6 + optional: true + + '@napi-rs/tar-win32-arm64-msvc@0.1.4': + optional: true + + '@napi-rs/tar-win32-ia32-msvc@0.1.4': + optional: true + + '@napi-rs/tar-win32-x64-msvc@0.1.4': + optional: true + + '@napi-rs/tar@0.1.4': + optionalDependencies: + '@napi-rs/tar-android-arm-eabi': 0.1.4 + '@napi-rs/tar-android-arm64': 0.1.4 + '@napi-rs/tar-darwin-arm64': 0.1.4 + '@napi-rs/tar-darwin-x64': 0.1.4 + '@napi-rs/tar-freebsd-x64': 0.1.4 + '@napi-rs/tar-linux-arm-gnueabihf': 0.1.4 + '@napi-rs/tar-linux-arm64-gnu': 0.1.4 + '@napi-rs/tar-linux-arm64-musl': 0.1.4 + '@napi-rs/tar-linux-ppc64-gnu': 0.1.4 + '@napi-rs/tar-linux-s390x-gnu': 0.1.4 + '@napi-rs/tar-linux-x64-gnu': 0.1.4 + '@napi-rs/tar-linux-x64-musl': 0.1.4 + '@napi-rs/tar-wasm32-wasi': 0.1.4 + '@napi-rs/tar-win32-arm64-msvc': 0.1.4 + '@napi-rs/tar-win32-ia32-msvc': 0.1.4 + '@napi-rs/tar-win32-x64-msvc': 0.1.4 + + '@napi-rs/wasm-runtime@0.2.6': + dependencies: + '@emnapi/core': 1.3.1 + '@emnapi/runtime': 1.3.1 + '@tybys/wasm-util': 0.9.0 + optional: true + + '@napi-rs/wasm-tools-android-arm-eabi@0.0.2': + optional: true + + '@napi-rs/wasm-tools-android-arm64@0.0.2': + optional: true + + '@napi-rs/wasm-tools-darwin-arm64@0.0.2': + optional: true + + '@napi-rs/wasm-tools-darwin-x64@0.0.2': + optional: true + + '@napi-rs/wasm-tools-freebsd-x64@0.0.2': + optional: true + + '@napi-rs/wasm-tools-linux-arm64-gnu@0.0.2': + optional: true + + '@napi-rs/wasm-tools-linux-arm64-musl@0.0.2': + optional: true + + '@napi-rs/wasm-tools-linux-x64-gnu@0.0.2': + optional: true + + '@napi-rs/wasm-tools-linux-x64-musl@0.0.2': + optional: true + + '@napi-rs/wasm-tools-wasm32-wasi@0.0.2': + dependencies: + '@napi-rs/wasm-runtime': 0.2.6 + optional: true + + '@napi-rs/wasm-tools-win32-arm64-msvc@0.0.2': + optional: true + + '@napi-rs/wasm-tools-win32-ia32-msvc@0.0.2': + optional: true + + '@napi-rs/wasm-tools-win32-x64-msvc@0.0.2': + optional: true + + '@napi-rs/wasm-tools@0.0.2': + optionalDependencies: + '@napi-rs/wasm-tools-android-arm-eabi': 0.0.2 + '@napi-rs/wasm-tools-android-arm64': 0.0.2 + '@napi-rs/wasm-tools-darwin-arm64': 0.0.2 + '@napi-rs/wasm-tools-darwin-x64': 0.0.2 + '@napi-rs/wasm-tools-freebsd-x64': 0.0.2 + '@napi-rs/wasm-tools-linux-arm64-gnu': 0.0.2 + '@napi-rs/wasm-tools-linux-arm64-musl': 0.0.2 + '@napi-rs/wasm-tools-linux-x64-gnu': 0.0.2 + '@napi-rs/wasm-tools-linux-x64-musl': 0.0.2 + '@napi-rs/wasm-tools-wasm32-wasi': 0.0.2 + '@napi-rs/wasm-tools-win32-arm64-msvc': 0.0.2 + '@napi-rs/wasm-tools-win32-ia32-msvc': 0.0.2 + '@napi-rs/wasm-tools-win32-x64-msvc': 0.0.2 + + '@next/env@15.1.6': {} + + '@next/eslint-plugin-next@15.1.6': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@15.1.6': + optional: true + + '@next/swc-darwin-x64@15.1.6': + optional: true + + '@next/swc-linux-arm64-gnu@15.1.6': + optional: true + + '@next/swc-linux-arm64-musl@15.1.6': + optional: true + + '@next/swc-linux-x64-gnu@15.1.6': + optional: true + + '@next/swc-linux-x64-musl@15.1.6': + optional: true + + '@next/swc-win32-arm64-msvc@15.1.6': + optional: true + + '@next/swc-win32-x64-msvc@15.1.6': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.0 + + '@nolyfill/is-core-module@1.0.39': {} + + '@octokit/auth-token@5.1.2': {} + + '@octokit/core@6.1.3': + dependencies: + '@octokit/auth-token': 5.1.2 + '@octokit/graphql': 8.2.0 + '@octokit/request': 9.2.0 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.8.0 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.2 + + '@octokit/endpoint@10.1.2': + dependencies: + '@octokit/types': 13.8.0 + universal-user-agent: 7.0.2 + + '@octokit/graphql@8.2.0': + dependencies: + '@octokit/request': 9.2.0 + '@octokit/types': 13.8.0 + universal-user-agent: 7.0.2 + + '@octokit/openapi-types@23.0.1': {} + + '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/types': 13.8.0 + + '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + + '@octokit/plugin-rest-endpoint-methods@13.3.0(@octokit/core@6.1.3)': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/types': 13.8.0 + + '@octokit/request-error@6.1.6': + dependencies: + '@octokit/types': 13.8.0 + + '@octokit/request@9.2.0': + dependencies: + '@octokit/endpoint': 10.1.2 + '@octokit/request-error': 6.1.6 + '@octokit/types': 13.8.0 + fast-content-type-parse: 2.0.1 + universal-user-agent: 7.0.2 + + '@octokit/rest@21.1.0': + dependencies: + '@octokit/core': 6.1.3 + '@octokit/plugin-paginate-rest': 11.4.0(@octokit/core@6.1.3) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.3) + '@octokit/plugin-rest-endpoint-methods': 13.3.0(@octokit/core@6.1.3) + + '@octokit/types@13.8.0': + dependencies: + '@octokit/openapi-types': 23.0.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@radix-ui/primitive@1.1.1': {} + + '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-context@1.1.1(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-direction@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-dismissable-layer@1.1.4(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-dropdown-menu@2.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-menu': 2.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-id@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-label@2.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-menu@2.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-dismissable-layer': 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + aria-hidden: 1.2.4 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-remove-scroll: 2.6.3(@types/react@19.0.8)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/rect': 1.1.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-slot': 1.1.1(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-progress@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-slot@1.1.1(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-switch@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-previous': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-tabs@1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@radix-ui/primitive': 1.1.1 + '@radix-ui/react-context': 1.1.1(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-direction': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-id': 1.1.0(@types/react@19.0.8)(react@19.0.0) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-previous@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/rect': 1.1.0 + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/react-use-size@1.1.0(@types/react@19.0.8)(react@19.0.0)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.8)(react@19.0.0) + react: 19.0.0 + optionalDependencies: + '@types/react': 19.0.8 + + '@radix-ui/rect@1.1.0': {} + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.10.5': {} + + '@scarf/scarf@1.4.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@swc/core-darwin-arm64@1.10.14': + optional: true + + '@swc/core-darwin-x64@1.10.14': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.10.14': + optional: true + + '@swc/core-linux-arm64-gnu@1.10.14': + optional: true + + '@swc/core-linux-arm64-musl@1.10.14': + optional: true + + '@swc/core-linux-x64-gnu@1.10.14': + optional: true + + '@swc/core-linux-x64-musl@1.10.14': + optional: true + + '@swc/core-win32-arm64-msvc@1.10.14': + optional: true + + '@swc/core-win32-ia32-msvc@1.10.14': + optional: true + + '@swc/core-win32-x64-msvc@1.10.14': + optional: true + + '@swc/core@1.10.14(@swc/helpers@0.5.15)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.10.14 + '@swc/core-darwin-x64': 1.10.14 + '@swc/core-linux-arm-gnueabihf': 1.10.14 + '@swc/core-linux-arm64-gnu': 1.10.14 + '@swc/core-linux-arm64-musl': 1.10.14 + '@swc/core-linux-x64-gnu': 1.10.14 + '@swc/core-linux-x64-musl': 1.10.14 + '@swc/core-win32-arm64-msvc': 1.10.14 + '@swc/core-win32-ia32-msvc': 1.10.14 + '@swc/core-win32-x64-msvc': 1.10.14 + '@swc/helpers': 0.5.15 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@swc/jest@0.2.37(@swc/core@1.10.14(@swc/helpers@0.5.15))': + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@swc/core': 1.10.14(@swc/helpers@0.5.15) + '@swc/counter': 0.1.3 + jsonc-parser: 3.3.1 + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@6.6.3': + dependencies: + '@adobe/css-tools': 4.4.1 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react-hooks@8.0.1(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.7 + react: 19.0.0 + react-error-boundary: 3.1.4(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + react-dom: 19.0.0(react@19.0.0) + + '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.7 + '@testing-library/dom': 10.4.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + '@types/react-dom': 19.0.3(@types/react@19.0.8) + + '@tootallnate/once@2.0.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.26.7 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.7 + '@babel/types': 7.26.7 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.7 + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@1.0.6': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.13.1 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/jsdom@20.0.1': + dependencies: + '@types/node': 22.13.1 + '@types/tough-cookie': 4.0.5 + parse5: 7.2.1 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 20.17.17 + + '@types/node@20.17.17': + dependencies: + undici-types: 6.19.8 + + '@types/node@22.13.1': + dependencies: + undici-types: 6.20.0 + + '@types/react-dom@19.0.3(@types/react@19.0.8)': + dependencies: + '@types/react': 19.0.8 + + '@types/react@19.0.8': + dependencies: + csstype: 3.1.3 + + '@types/stack-utils@2.0.3': {} + + '@types/strip-bom@3.0.0': {} + + '@types/strip-json-comments@0.0.30': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/webpack@5.28.5(@swc/core@1.10.14(@swc/helpers@0.5.15))': + dependencies: + '@types/node': 22.13.1 + tapable: 2.2.1 + webpack: 5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15)) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + + '@types/wrap-ansi@3.0.0': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/type-utils': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 + eslint: 9.19.0(jiti@1.21.7) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.23.0 + debug: 4.4.0 + eslint: 9.19.0(jiti@1.21.7) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.23.0': + dependencies: + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + + '@typescript-eslint/type-utils@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.19.0(jiti@1.21.7) + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.23.0': {} + + '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.0.1(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.23.0': + dependencies: + '@typescript-eslint/types': 8.23.0 + eslint-visitor-keys: 4.2.0 + + '@webassemblyjs/ast@1.14.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} + + '@webassemblyjs/helper-api-error@1.13.2': {} + + '@webassemblyjs/helper-buffer@1.14.1': {} + + '@webassemblyjs/helper-numbers@1.13.2': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} + + '@webassemblyjs/helper-wasm-section@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 + + '@webassemblyjs/ieee754@1.13.2': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.13.2': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.13.2': {} + + '@webassemblyjs/wasm-edit@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 + + '@webassemblyjs/wasm-gen@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wasm-opt@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + + '@webassemblyjs/wasm-parser@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 + + '@webassemblyjs/wast-printer@1.14.1': + dependencies: + '@webassemblyjs/ast': 1.14.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abab@2.0.6: {} + + acorn-globals@7.0.1: + dependencies: + acorn: 8.14.0 + acorn-walk: 8.3.4 + + acorn-jsx@5.3.2(acorn@8.14.0): + dependencies: + acorn: 8.14.0 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.0 + + acorn@8.14.0: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + arg@5.0.2: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-hidden@1.2.4: + dependencies: + tslib: 2.8.1 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + is-array-buffer: 3.0.5 + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + is-string: 1.1.1 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-shim-unscopables: 1.0.2 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + axe-core@4.10.2: {} + + axobject-query@4.1.0: {} + + babel-jest@29.7.0(@babel/core@7.26.7): + dependencies: + '@babel/core': 7.26.7 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.26.7) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.26.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.7 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.7): + dependencies: + '@babel/core': 7.26.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.7) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.7) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.7) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.7) + + babel-preset-jest@29.6.3(@babel/core@7.26.7): + dependencies: + '@babel/core': 7.26.7 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.7) + + balanced-match@1.0.2: {} + + before-after-hook@3.0.2: {} + + binary-extensions@2.3.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001697 + electron-to-chromium: 1.5.92 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + busboy@1.6.0: + dependencies: + streamsearch: 1.1.0 + + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + get-intrinsic: 1.2.7 + set-function-length: 1.2.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.7 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001697: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + char-regex@1.0.2: {} + + chardet@0.7.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chrome-trace-event@1.0.4: {} + + ci-info@3.9.0: {} + + cjs-module-lexer@1.4.3: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-width@4.1.0: {} + + client-only@0.0.1: {} + + clipanion@3.2.1(typanion@3.14.0): + dependencies: + typanion: 3.14.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clsx@2.1.1: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@4.1.1: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + create-jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css.escape@1.5.1: {} + + cssesc@3.0.0: {} + + cssom@0.3.8: {} + + cssom@0.5.0: {} + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + csstype@3.1.3: {} + + damerau-levenshtein@1.0.8: {} + + data-urls@3.0.2: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dateformat@3.0.2: {} + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.0: + dependencies: + ms: 2.1.3 + + decimal.js@10.5.0: {} + + dedent@1.5.3: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + detect-libc@2.0.3: + optional: true + + detect-newline@3.1.0: {} + + detect-node-es@1.1.0: {} + + didyoumean@1.2.2: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dlv@1.1.3: {} + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + dotenv-cli@7.4.4: + dependencies: + cross-spawn: 7.0.6 + dotenv: 16.4.7 + dotenv-expand: 10.0.0 + minimist: 1.2.8 + + dotenv-expand@10.0.0: {} + + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + dynamic-dedupe@0.3.0: + dependencies: + xtend: 4.0.2 + + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.92: {} + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + entities@4.5.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.18 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.7 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + safe-array-concat: 1.1.3 + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-next@15.1.6(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3): + dependencies: + '@next/eslint-plugin-next': 15.1.6 + '@rushstack/eslint-patch': 1.10.5 + '@typescript-eslint/eslint-plugin': 8.23.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.7)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.19.0(jiti@1.21.7)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.19.0(jiti@1.21.7)) + eslint-plugin-react: 7.37.4(eslint@9.19.0(jiti@1.21.7)) + eslint-plugin-react-hooks: 5.1.0(eslint@9.19.0(jiti@1.21.7)) + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.7)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.0 + enhanced-resolve: 5.18.1 + eslint: 9.19.0(jiti@1.21.7) + fast-glob: 3.3.3 + get-tsconfig: 4.10.0 + is-bun-module: 1.3.0 + is-glob: 4.0.3 + stable-hash: 0.0.4 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.19.0(jiti@1.21.7)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.19.0(jiti@1.21.7)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.19.0(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.19.0(jiti@1.21.7)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.19.0(jiti@1.21.7)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.19.0(jiti@1.21.7) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.19.0(jiti@1.21.7)) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.23.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.19.0(jiti@1.21.7)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.10.2 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.19.0(jiti@1.21.7) + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@5.1.0(eslint@9.19.0(jiti@1.21.7)): + dependencies: + eslint: 9.19.0(jiti@1.21.7) + + eslint-plugin-react@7.37.4(eslint@9.19.0(jiti@1.21.7)): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.2.1 + eslint: 9.19.0(jiti@1.21.7) + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@8.2.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.19.0(jiti@1.21.7): + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/core': 0.10.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.19.0 + '@eslint/plugin-kit': 0.2.5 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.1 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 1.21.7 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-content-type-parse@2.0.1: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastq@1.19.0: + dependencies: + reusify: 1.0.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.2 + keyv: 4.5.4 + + flatted@3.3.2: {} + + for-each@0.3.4: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.7: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-nonce@1.0.1: {} + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-escaper@2.0.2: {} + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ignore@5.3.2: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + inquirer@10.2.2: + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/prompts': 5.5.0 + '@inquirer/type': 1.5.5 + '@types/mute-stream': 0.0.4 + ansi-escapes: 4.3.2 + mute-stream: 1.0.0 + run-async: 3.0.0 + rxjs: 7.8.1 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: + optional: true + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.3 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-bun-module@1.3.0: + dependencies: + semver: 7.7.1 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.3 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.3 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.3 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.3 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.18 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.3 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.7 + '@babel/parser': 7.26.7 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.26.7 + '@babel/parser': 7.26.7 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.3 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + '@babel/core': 7.26.7 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.7) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.13.1 + ts-node: 10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-jsdom@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/jsdom': 20.0.1 + '@types/node': 22.13.1 + jest-mock: 29.7.0 + jest-util: 29.7.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.13.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-html-reporter@3.10.2(jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)))(typescript@5.7.3): + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + dateformat: 3.0.2 + jest: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + mkdirp: 1.0.4 + strip-ansi: 6.0.1 + typescript: 5.7.3 + xmlbuilder: 15.0.0 + + jest-junit@16.0.0: + dependencies: + mkdirp: 1.0.4 + strip-ansi: 6.0.1 + uuid: 8.3.2 + xml: 1.0.1 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.26.2 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.7 + '@babel/generator': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.7) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.7) + '@babel/types': 7.26.7 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.7) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + + jest-summary-reporter@0.0.2: + dependencies: + chalk: 2.4.2 + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.13.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.13.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.13.1 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@1.21.7: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsdom@20.0.3: + dependencies: + abab: 2.0.6 + acorn: 8.14.0 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.5.0 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.1 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.18.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.2: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + loader-runner@4.3.0: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash@4.17.21: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lucide-react@0.471.2(react@19.0.0): + dependencies: + react: 19.0.0 + + lz-string@1.5.0: {} + + make-dir@4.0.0: + dependencies: + semver: 7.7.1 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + math-intrinsics@1.1.0: {} + + memorystream@0.3.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + min-indent@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@1.0.4: {} + + ms@2.1.3: {} + + mute-stream@1.0.0: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.8: {} + + natural-compare@1.4.0: {} + + neo-async@2.6.2: {} + + next-themes@0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + next@15.1.6(@babel/core@7.26.7)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@next/env': 15.1.6 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001697 + postcss: 8.4.31 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + styled-jsx: 5.1.6(@babel/core@7.26.7)(react@19.0.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.1.6 + '@next/swc-darwin-x64': 15.1.6 + '@next/swc-linux-arm64-gnu': 15.1.6 + '@next/swc-linux-arm64-musl': 15.1.6 + '@next/swc-linux-x64-gnu': 15.1.6 + '@next/swc-linux-x64-musl': 15.1.6 + '@next/swc-win32-arm64-msvc': 15.1.6 + '@next/swc-win32-x64-msvc': 15.1.6 + sharp: 0.33.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-path@3.0.0: {} + + npm-normalize-package-bin@3.0.1: {} + + npm-run-all2@6.2.6: + dependencies: + ansi-styles: 6.2.1 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + minimatch: 9.0.5 + pidtree: 0.6.0 + read-package-json-fast: 3.0.2 + shell-quote: 1.8.2 + which: 3.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nwsapi@2.2.16: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-tmpdir@1.0.2: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.2.7 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse5@7.2.1: + dependencies: + entities: 4.5.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + possible-typed-array-names@1.0.0: {} + + postcss-import@15.1.0(postcss@8.5.1): + dependencies: + postcss: 8.5.1 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.0.1(postcss@8.5.1): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.1 + + postcss-load-config@4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.7.0 + optionalDependencies: + postcss: 8.5.1 + ts-node: 10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3) + + postcss-nested@6.2.0(postcss@8.5.1): + dependencies: + postcss: 8.5.1 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.5.1: + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-dom@19.0.0(react@19.0.0): + dependencies: + react: 19.0.0 + scheduler: 0.25.0 + + react-error-boundary@3.1.4(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.7 + react: 19.0.0 + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.3.1: {} + + react-remove-scroll-bar@2.3.8(@types/react@19.0.8)(react@19.0.0): + dependencies: + react: 19.0.0 + react-style-singleton: 2.2.3(@types/react@19.0.8)(react@19.0.0) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.8 + + react-remove-scroll@2.6.3(@types/react@19.0.8)(react@19.0.0): + dependencies: + react: 19.0.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.8)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.8)(react@19.0.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.8)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.8)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.8 + + react-style-singleton@2.2.3(@types/react@19.0.8)(react@19.0.0): + dependencies: + get-nonce: 1.0.1 + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.8 + + react@19.0.0: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.0.4: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + get-intrinsic: 1.2.7 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safer-buffer@2.1.2: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.25.0: {} + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + semver@6.3.1: {} + + semver@7.7.1: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.7 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.7.1 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.7 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + optional: true + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + sonner@1.7.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + source-map-js@1.2.1: {} + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stable-hash@0.0.4: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + streamsearch@1.1.0: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.2.7 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.3 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.26.7)(react@19.0.0): + dependencies: + client-only: 0.0.1 + react: 19.0.0 + optionalDependencies: + '@babel/core': 7.26.7 + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + symbol-tree@3.2.4: {} + + tailwind-merge@2.6.0: {} + + tailwindcss-animate@1.0.7(tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3))): + dependencies: + tailwindcss: 3.4.17(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + + tailwindcss@3.4.17(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)): + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.1 + postcss-import: 15.1.0(postcss@8.5.1) + postcss-js: 4.0.1(postcss@8.5.1) + postcss-load-config: 4.0.2(postcss@8.5.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + postcss-nested: 6.2.0(postcss@8.5.1) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + tapable@2.2.1: {} + + terser-webpack-plugin@5.3.11(@swc/core@1.10.14(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15))): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.0 + serialize-javascript: 6.0.2 + terser: 5.38.0 + webpack: 5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15)) + optionalDependencies: + '@swc/core': 1.10.14(@swc/helpers@0.5.15) + + terser@5.38.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toml@3.0.0: {} + + tough-cookie@4.1.4: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@3.0.0: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + ts-api-utils@2.0.1(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + + ts-interface-checker@0.1.13: {} + + ts-jest@29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)))(typescript@5.7.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@22.13.1)(ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.1 + typescript: 5.7.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.26.7 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.26.7) + + ts-node-dev@2.0.0(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3): + dependencies: + chokidar: 3.6.0 + dynamic-dedupe: 0.3.0 + minimist: 1.2.8 + mkdirp: 1.0.4 + resolve: 1.22.10 + rimraf: 2.7.1 + source-map-support: 0.5.21 + tree-kill: 1.2.2 + ts-node: 10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3) + tsconfig: 7.0.0 + typescript: 5.7.3 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + + ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@20.17.17)(typescript@5.7.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.17 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.10.14(@swc/helpers@0.5.15) + + ts-node@10.9.2(@swc/core@1.10.14(@swc/helpers@0.5.15))(@types/node@22.13.1)(typescript@5.7.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.13.1 + acorn: 8.14.0 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.7.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.10.14(@swc/helpers@0.5.15) + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig@7.0.0: + dependencies: + '@types/strip-bom': 3.0.0 + '@types/strip-json-comments': 0.0.30 + strip-bom: 3.0.0 + strip-json-comments: 2.0.1 + + tslib@2.8.1: {} + + typanion@3.14.0: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.21.3: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.4 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.4 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.4 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.0.0 + reflect.getprototypeof: 1.0.10 + + typescript@5.7.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.3 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.19.8: {} + + undici-types@6.20.0: {} + + universal-user-agent@7.0.2: {} + + universalify@0.2.0: {} + + update-browserslist-db@1.1.2(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + use-callback-ref@1.3.3(@types/react@19.0.8)(react@19.0.0): + dependencies: + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.8 + + use-sidecar@1.1.3(@types/react@19.0.8)(react@19.0.0): + dependencies: + detect-node-es: 1.1.0 + react: 19.0.0 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.0.8 + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + wasm-sjlj@1.0.6: {} + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + webidl-conversions@7.0.0: {} + + webpack-sources@3.2.3: {} + + webpack@5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15)): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.14.0 + browserslist: 4.24.4 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.1 + es-module-lexer: 1.6.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.11(@swc/core@1.10.14(@swc/helpers@0.5.15))(webpack@5.97.1(@swc/core@1.10.14(@swc/helpers@0.5.15))) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: {} + + whatwg-url@11.0.0: + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.3 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.18 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.18: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.3 + for-each: 0.3.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.0: {} + + xml-name-validator@4.0.0: {} + + xml@1.0.1: {} + + xmlbuilder@15.0.0: {} + + xmlchars@2.2.0: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml@2.7.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.2: {} + + zod@3.24.1: {} + + zsa-react@0.2.3(react@19.0.0)(zod@3.24.1): + dependencies: + react: 19.0.0 + zod: 3.24.1 + zsa: 0.6.0(zod@3.24.1) + + zsa@0.6.0(zod@3.24.1): + dependencies: + zod: 3.24.1 diff --git a/integ-tests/react/pnpm-workspace.yaml b/integ-tests/react/pnpm-workspace.yaml new file mode 100644 index 000000000..b1915c5d0 --- /dev/null +++ b/integ-tests/react/pnpm-workspace.yaml @@ -0,0 +1,10 @@ +packages: + - '../../engine/language_client_typescript' + - '../../engine/language_client_typescript/npm/darwin-arm64' + - '../../engine/language_client_typescript/npm/darwin-x64' + - '../../engine/language_client_typescript/npm/linux-arm64-gmu' + - '../../engine/language_client_typescript/npm/linux-arm64-musl' + - '../../engine/language_client_typescript/npm/linux-x64-gnu' + - '../../engine/language_client_typescript/npm/linux-x64-musl' + - '../../engine/language_client_typescript/npm/win32-x64-msvc' + - '../../typescript/nextjs-plugin' diff --git a/integ-tests/react/postcss.config.mjs b/integ-tests/react/postcss.config.mjs new file mode 100644 index 000000000..1a69fd2a4 --- /dev/null +++ b/integ-tests/react/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/integ-tests/react/public/file.svg b/integ-tests/react/public/file.svg new file mode 100644 index 000000000..004145cdd --- /dev/null +++ b/integ-tests/react/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/integ-tests/react/public/globe.svg b/integ-tests/react/public/globe.svg new file mode 100644 index 000000000..567f17b0d --- /dev/null +++ b/integ-tests/react/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/integ-tests/react/public/next.svg b/integ-tests/react/public/next.svg new file mode 100644 index 000000000..5174b28c5 --- /dev/null +++ b/integ-tests/react/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/integ-tests/react/public/vercel.svg b/integ-tests/react/public/vercel.svg new file mode 100644 index 000000000..770539603 --- /dev/null +++ b/integ-tests/react/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/integ-tests/react/public/window.svg b/integ-tests/react/public/window.svg new file mode 100644 index 000000000..b2b2a44f6 --- /dev/null +++ b/integ-tests/react/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/integ-tests/react/src/app/actions.ts b/integ-tests/react/src/app/actions.ts new file mode 100644 index 000000000..271e10c29 --- /dev/null +++ b/integ-tests/react/src/app/actions.ts @@ -0,0 +1,33 @@ + +'use server' + +import { b, UniverseQuestion, UniverseQuestionInput } from '../../baml_client' +import { ServerAction } from '../../baml_client/react/types' + +/** + * Server action for testing AWS functionality + */ +export const CustomTestAwsAction = (async ( + input: string, + options?: { stream?: boolean } +) => { + if (options?.stream) { + const stream = b.stream.TestAws(input); + return stream.toStreamable(); + } + return b.TestAws(input); +}) as ServerAction; + +/** + * Server action for testing universe questions + */ +export const CustomTestUniverseQuestionAction = (async ( + input: UniverseQuestionInput, + options?: { stream?: boolean } +) => { + if (options?.stream) { + const stream = b.stream.TestUniverseQuestion(input); + return stream.toStreamable(); + } + return b.TestUniverseQuestion(input); +}) as ServerAction; diff --git a/integ-tests/react/src/app/api/baml/[baml_function]/route.ts b/integ-tests/react/src/app/api/baml/[baml_function]/route.ts new file mode 100644 index 000000000..679a5e80e --- /dev/null +++ b/integ-tests/react/src/app/api/baml/[baml_function]/route.ts @@ -0,0 +1,88 @@ +import { NextRequest, NextResponse } from 'next/server' +import { b } from '../../../../../baml_client' + +export async function POST( + req: NextRequest, + { params: routeParams }: { params: Promise<{ baml_function: string }> } +) { + try { + const { baml_function } = await routeParams + const functionParams = await req.json() + + console.log('baml_function', baml_function) + + // Type check if the function exists on the BAML client + if (!(baml_function in b.stream)) { + return NextResponse.json( + { error: `Function ${baml_function} not found` }, + { status: 404 } + ) + } + + // Get the function from the BAML client + // const bamlFn = b.stream[baml_function as keyof typeof b.stream] + // if (typeof bamlFn !== 'function') { + // return NextResponse.json( + // { error: `${baml_function} is not a function` }, + // { status: 400 } + // ) + // } + + // Create a TransformStream for streaming the response + const stream = new TransformStream() + const writer = stream.writable.getWriter() + const encoder = new TextEncoder() + + // Start streaming the response + // const bamlStream = bamlFn(functionParams) + + // Process the stream in the background + // ;(async () => { + // try { + // for await (const chunk of bamlStream) { + // // Send partial results + // await writer.write( + // encoder.encode( + // JSON.stringify({ partial: chunk }) + '\n' + // ) + // ) + // } + + // // Send final result + // const finalResponse = await bamlStream.getFinalResponse() + // await writer.write( + // encoder.encode( + // JSON.stringify({ final: finalResponse }) + '\n' + // ) + // ) + // } catch (error) { + // // Send error if something goes wrong + // await writer.write( + // encoder.encode( + // JSON.stringify({ + // error: error instanceof Error ? error.message : 'Unknown error' + // }) + '\n' + // ) + // ) + // } finally { + // await writer.close() + // } + // })() + + // Return the stream response + return new NextResponse(stream.readable, { + headers: { + 'Content-Type': 'application/x-ndjson', + 'Transfer-Encoding': 'chunked', + }, + }) + } catch (error) { + console.error('API Error:', error) + return NextResponse.json( + { + error: error instanceof Error ? error.message : 'Internal server error' + }, + { status: 500 } + ) + } +} diff --git a/integ-tests/react/src/app/favicon.ico b/integ-tests/react/src/app/favicon.ico new file mode 100644 index 000000000..718d6fea4 Binary files /dev/null and b/integ-tests/react/src/app/favicon.ico differ diff --git a/integ-tests/react/src/app/globals.css b/integ-tests/react/src/app/globals.css new file mode 100644 index 000000000..9e332aa3f --- /dev/null +++ b/integ-tests/react/src/app/globals.css @@ -0,0 +1,68 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --radius: 0.5rem; + } + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/integ-tests/react/src/app/layout.tsx b/integ-tests/react/src/app/layout.tsx new file mode 100644 index 000000000..4623d80b2 --- /dev/null +++ b/integ-tests/react/src/app/layout.tsx @@ -0,0 +1,49 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; +import { Toaster } from "sonner"; +import { ThemeProvider } from "@/components/theme-provider"; +import { cn } from "@/lib/utils"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "BAML Next.js Demo", + description: "BAML + Next.js Integration Demo", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + + + ); +} diff --git a/integ-tests/react/src/app/page.tsx b/integ-tests/react/src/app/page.tsx new file mode 100644 index 000000000..ad7a3ff0a --- /dev/null +++ b/integ-tests/react/src/app/page.tsx @@ -0,0 +1,100 @@ +import Image from "next/image"; +import TestClient from "./test-client"; +import { Button } from "@/components/ui/button"; +import { ModeToggle } from "@/components/mode-toggle"; +import { GithubIcon } from "lucide-react"; + +export default function Home() { + return ( +
+
+
+
+ Next.js logo + + + BAML +
+
+ + +
+
+ +
+
+

+ BAML + Next.js Integration +

+

+ Test the integration by entering some text below. +

+
+ +
+ + +
+ + +
+ + +
+
+ ); +} diff --git a/integ-tests/react/src/app/test-client.tsx b/integ-tests/react/src/app/test-client.tsx new file mode 100644 index 000000000..0572a7891 --- /dev/null +++ b/integ-tests/react/src/app/test-client.tsx @@ -0,0 +1,192 @@ +// NOTE: Uncomment this to verify that the types are working +// @ts-nocheck + +'use client' + +import { Alert, AlertDescription } from '@/components/ui/alert' +import { Button } from '@/components/ui/button' +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card' +import { Input } from '@/components/ui/input' +import { Label } from '@/components/ui/label' +import { Loader2 } from 'lucide-react' +import * as React from 'react' +import { useBamlAction, useTestAws } from '../../baml_client/react/client' +import { TestAws } from '../../baml_client/react/server_streaming' +import type { HookResult, NonStreamingHookResult, StreamingHookResult } from '../../baml_client/react/types' + +type ResponseCardProps = { + streamingHookResult: StreamingHookResult<'TestAws'> + nonStreamingHookResult: NonStreamingHookResult<'TestAws'> + status: HookResult['status'] +} + +function ResponseCard({ streamingHookResult, nonStreamingHookResult, status }: ResponseCardProps) { + const { isPending, error, isError, data, partialData } = streamingHookResult + const response = isPending ? partialData : data + + return ( + <> + {isError && ( + + Error: {error?.message} + + )} + + {response && ( +
+ + +
+                {typeof response === 'string' ? response : JSON.stringify(response, null, 2)}
+              
+
+
+
+ )} + {status} + + ) +} + +export default function TestClient() { + const streamingDirectAction = useTestAws({ + stream: true, + onPartial: (response) => { + console.log('Got partial response', response) + }, + onFinal: (response) => { + console.log('Got final response', response) + }, + onError: (error) => { + console.error('Got error', error) + }, + }) + + // // Streaming should not have errors + streamingDirectAction satisfies StreamingHookResult<'TestAws'> + streamingDirectAction.data satisfies string | undefined + streamingDirectAction.partialData satisfies string | null | undefined + streamingDirectAction.mutate satisfies (input: string) => Promise> + + // // Non-Streaming should have errors + streamingDirectAction satisfies NonStreamingHookResult<'TestAws'> + streamingDirectAction.data satisfies never + streamingDirectAction.partialData satisfies never + streamingDirectAction.mutate satisfies (input: string) => Promise + + const nonStreamingDirectAction = useTestAws({ + onFinal: (response) => { + console.log('Got final response', response) + }, + onError: (error) => { + console.error('Got error', error) + }, + }) + + // Streaming should have errors + nonStreamingDirectAction satisfies NonStreamingHookResult<'TestAws'> + nonStreamingDirectAction.data satisfies never + nonStreamingDirectAction.partialData satisfies never + nonStreamingDirectAction.mutate satisfies (input: string) => Promise + + // Non-Streaming should not have errors + nonStreamingDirectAction satisfies NonStreamingHookResult<'TestAws'> + nonStreamingDirectAction.data satisfies string | undefined + nonStreamingDirectAction.partialData satisfies never | undefined + nonStreamingDirectAction.mutate satisfies (input: string) => Promise + + const streamingIndirectAction = useBamlAction(TestAws, { + stream: true, + onPartial: (response) => { + console.log('Got partial response', response) + }, + onFinal: (response) => { + console.log('Got final response', response) + }, + onError: (error) => { + console.error('Got error', error) + }, + }) + + // Streaming should not have errors + streamingIndirectAction satisfies StreamingHookResult<'TestAws'> + streamingIndirectAction.data satisfies string | undefined + streamingIndirectAction.partialData satisfies string | null | undefined + streamingIndirectAction.mutate satisfies (input: string) => Promise> + + // Non-Streaming should have errors + streamingIndirectAction satisfies NonStreamingHookResult<'TestAws'> + streamingIndirectAction.data satisfies never + streamingIndirectAction.partialData satisfies never | undefined + streamingIndirectAction.mutate satisfies (input: string) => Promise + + const nonStreamingIndirectAction = useBamlAction(TestAws, { + onFinal: (response) => { + console.log('Got final response', response) + }, + onError: (error) => { + console.error('Got error', error) + }, + }) + + // Streaming should have errors + nonStreamingIndirectAction satisfies StreamingHookResult<'TestAws'> + nonStreamingIndirectAction.data satisfies never + nonStreamingIndirectAction.partialData satisfies never + nonStreamingIndirectAction.mutate satisfies (input: string) => Promise> + + // Non-Streaming should not have errors + nonStreamingIndirectAction satisfies NonStreamingHookResult<'TestAws'> + nonStreamingIndirectAction.data satisfies string | undefined + nonStreamingIndirectAction.partialData satisfies never | undefined + nonStreamingIndirectAction.mutate satisfies (input: string) => Promise + + const { isPending, error, isError, isSuccess, mutate, status, data, partialData } = streamingDirectAction + + const response = isPending ? partialData : data + const [prompt, setPrompt] = React.useState('') + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + if (!prompt.trim()) return + + await mutate(prompt) + setPrompt('') + } + + return ( + + + BAML AWS Test + Test the BAML AWS integration by entering some text below. + + + +
+
+ + ) => setPrompt(e.target.value)} + placeholder='Type something...' + disabled={isPending} + /> +
+ + +
+ + +
+
+ ) +} diff --git a/integ-tests/react/src/components/mode-toggle.tsx b/integ-tests/react/src/components/mode-toggle.tsx new file mode 100644 index 000000000..bf1470451 --- /dev/null +++ b/integ-tests/react/src/components/mode-toggle.tsx @@ -0,0 +1,40 @@ +"use client" + +import * as React from "react" +import { MoonIcon, SunIcon } from "lucide-react" +import { useTheme } from "next-themes" + +import { Button } from "@/components/ui/button" +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu" + +export function ModeToggle() { + const { setTheme } = useTheme() + + return ( + + + + + + setTheme("light")}> + Light + + setTheme("dark")}> + Dark + + setTheme("system")}> + System + + + + ) +} \ No newline at end of file diff --git a/integ-tests/react/src/components/theme-provider.tsx b/integ-tests/react/src/components/theme-provider.tsx new file mode 100644 index 000000000..22379ddf2 --- /dev/null +++ b/integ-tests/react/src/components/theme-provider.tsx @@ -0,0 +1,9 @@ +"use client" + +import * as React from "react" +import { ThemeProvider as NextThemesProvider } from "next-themes" +import { type ThemeProviderProps } from "next-themes" + +export function ThemeProvider({ children, ...props }: ThemeProviderProps) { + return {children} +} \ No newline at end of file diff --git a/integ-tests/react/src/components/ui/alert.tsx b/integ-tests/react/src/components/ui/alert.tsx new file mode 100644 index 000000000..41fa7e056 --- /dev/null +++ b/integ-tests/react/src/components/ui/alert.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
+)) +Alert.displayName = "Alert" + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertTitle.displayName = "AlertTitle" + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +AlertDescription.displayName = "AlertDescription" + +export { Alert, AlertTitle, AlertDescription } diff --git a/integ-tests/react/src/components/ui/badge.tsx b/integ-tests/react/src/components/ui/badge.tsx new file mode 100644 index 000000000..f000e3ef5 --- /dev/null +++ b/integ-tests/react/src/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ) +} + +export { Badge, badgeVariants } diff --git a/integ-tests/react/src/components/ui/button.tsx b/integ-tests/react/src/components/ui/button.tsx new file mode 100644 index 000000000..36496a287 --- /dev/null +++ b/integ-tests/react/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/integ-tests/react/src/components/ui/card.tsx b/integ-tests/react/src/components/ui/card.tsx new file mode 100644 index 000000000..f62edea57 --- /dev/null +++ b/integ-tests/react/src/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/integ-tests/react/src/components/ui/dropdown-menu.tsx b/integ-tests/react/src/components/ui/dropdown-menu.tsx new file mode 100644 index 000000000..0fc4c0e07 --- /dev/null +++ b/integ-tests/react/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,200 @@ +"use client" + +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { Check, ChevronRight, Circle } from "lucide-react" + +import { cn } from "@/lib/utils" + +const DropdownMenu = DropdownMenuPrimitive.Root + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger + +const DropdownMenuGroup = DropdownMenuPrimitive.Group + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal + +const DropdownMenuSub = DropdownMenuPrimitive.Sub + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +DropdownMenuShortcut.displayName = "DropdownMenuShortcut" + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} diff --git a/integ-tests/react/src/components/ui/input.tsx b/integ-tests/react/src/components/ui/input.tsx new file mode 100644 index 000000000..68551b927 --- /dev/null +++ b/integ-tests/react/src/components/ui/input.tsx @@ -0,0 +1,22 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Input = React.forwardRef>( + ({ className, type, ...props }, ref) => { + return ( + + ) + } +) +Input.displayName = "Input" + +export { Input } diff --git a/integ-tests/react/src/components/ui/label.tsx b/integ-tests/react/src/components/ui/label.tsx new file mode 100644 index 000000000..534182176 --- /dev/null +++ b/integ-tests/react/src/components/ui/label.tsx @@ -0,0 +1,26 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const labelVariants = cva( + "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +) + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)) +Label.displayName = LabelPrimitive.Root.displayName + +export { Label } diff --git a/integ-tests/react/src/components/ui/progress.tsx b/integ-tests/react/src/components/ui/progress.tsx new file mode 100644 index 000000000..5c87ea486 --- /dev/null +++ b/integ-tests/react/src/components/ui/progress.tsx @@ -0,0 +1,28 @@ +"use client" + +import * as React from "react" +import * as ProgressPrimitive from "@radix-ui/react-progress" + +import { cn } from "@/lib/utils" + +const Progress = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, value, ...props }, ref) => ( + + + +)) +Progress.displayName = ProgressPrimitive.Root.displayName + +export { Progress } diff --git a/integ-tests/react/src/components/ui/skeleton.tsx b/integ-tests/react/src/components/ui/skeleton.tsx new file mode 100644 index 000000000..01b8b6d4f --- /dev/null +++ b/integ-tests/react/src/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils" + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ) +} + +export { Skeleton } diff --git a/integ-tests/react/src/components/ui/sonner.tsx b/integ-tests/react/src/components/ui/sonner.tsx new file mode 100644 index 000000000..452f4d9f0 --- /dev/null +++ b/integ-tests/react/src/components/ui/sonner.tsx @@ -0,0 +1,31 @@ +"use client" + +import { useTheme } from "next-themes" +import { Toaster as Sonner } from "sonner" + +type ToasterProps = React.ComponentProps + +const Toaster = ({ ...props }: ToasterProps) => { + const { theme = "system" } = useTheme() + + return ( + + ) +} + +export { Toaster } diff --git a/integ-tests/react/src/components/ui/switch.tsx b/integ-tests/react/src/components/ui/switch.tsx new file mode 100644 index 000000000..bc69cf2db --- /dev/null +++ b/integ-tests/react/src/components/ui/switch.tsx @@ -0,0 +1,29 @@ +"use client" + +import * as React from "react" +import * as SwitchPrimitives from "@radix-ui/react-switch" + +import { cn } from "@/lib/utils" + +const Switch = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +Switch.displayName = SwitchPrimitives.Root.displayName + +export { Switch } diff --git a/integ-tests/react/src/components/ui/table.tsx b/integ-tests/react/src/components/ui/table.tsx new file mode 100644 index 000000000..7f3502f8b --- /dev/null +++ b/integ-tests/react/src/components/ui/table.tsx @@ -0,0 +1,117 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Table = React.forwardRef< + HTMLTableElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+ + +)) +Table.displayName = "Table" + +const TableHeader = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableHeader.displayName = "TableHeader" + +const TableBody = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableBody.displayName = "TableBody" + +const TableFooter = React.forwardRef< + HTMLTableSectionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + tr]:last:border-b-0", + className + )} + {...props} + /> +)) +TableFooter.displayName = "TableFooter" + +const TableRow = React.forwardRef< + HTMLTableRowElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableRow.displayName = "TableRow" + +const TableHead = React.forwardRef< + HTMLTableCellElement, + React.ThHTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +TableHead.displayName = "TableHead" + +const TableCell = React.forwardRef< + HTMLTableCellElement, + React.TdHTMLAttributes +>(({ className, ...props }, ref) => ( + +)) +TableCell.displayName = "TableCell" + +const TableCaption = React.forwardRef< + HTMLTableCaptionElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +TableCaption.displayName = "TableCaption" + +export { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, +} diff --git a/integ-tests/react/src/components/ui/tabs.tsx b/integ-tests/react/src/components/ui/tabs.tsx new file mode 100644 index 000000000..26eb10912 --- /dev/null +++ b/integ-tests/react/src/components/ui/tabs.tsx @@ -0,0 +1,55 @@ +"use client" + +import * as React from "react" +import * as TabsPrimitive from "@radix-ui/react-tabs" + +import { cn } from "@/lib/utils" + +const Tabs = TabsPrimitive.Root + +const TabsList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsList.displayName = TabsPrimitive.List.displayName + +const TabsTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsTrigger.displayName = TabsPrimitive.Trigger.displayName + +const TabsContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +TabsContent.displayName = TabsPrimitive.Content.displayName + +export { Tabs, TabsList, TabsTrigger, TabsContent } diff --git a/integ-tests/react/src/components/ui/textarea.tsx b/integ-tests/react/src/components/ui/textarea.tsx new file mode 100644 index 000000000..4d858bb6b --- /dev/null +++ b/integ-tests/react/src/components/ui/textarea.tsx @@ -0,0 +1,22 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Textarea = React.forwardRef< + HTMLTextAreaElement, + React.ComponentProps<"textarea"> +>(({ className, ...props }, ref) => { + return ( +