Skip to content

feat(bridges): python outbound generics, nodejs inbound explicit and outbound - #3825

Merged
sxlijin merged 1 commit into
canaryfrom
sam/generic3
Jun 22, 2026
Merged

sxlijin merged 1 commit into
canaryfrom
sam/generic3

Conversation

@sxlijin

@sxlijin sxlijin commented Jun 22, 2026 •

Copy link
Copy Markdown
Contributor

Bring the TypeScript/Node SDK to parity with Python for generic classes and functions, and make outbound decoding repopulate a generic instance's concrete type args in both SDKs.

  • codegen (sdkgen_typescript_node): emit a static $generic param list and an optional $types field on every generic class; pass type_params/ classTypeParams to defineFunction/defineInstanceFunction.
  • bridge_nodejs: encode a generic instance as a FQN-tagged class_value with the value-level class_ty channel (absent $types -> Ty::Unknown); build/encode CallFunctionArgs.type_args; decodeClass repopulates $types (non-enumerable) from the wire generic_args. Thread CallFunctionArgs.type_args into the engine call context (was dropped on the Node side).
  • bridge_ctypes: outbound encoder now sends a generic instance's type_args as BamlValueClass.name.generic_args, using the canonical FQN (render_dotted) so the host typemap resolves it.
  • re-enable the generic round-trip + instance-method tests (TS + Python).

Summary by CodeRabbit

  • New Features

    • Improved TypeScript/Node.js SDK support for generic class instances, including value-level $types bindings and generic call type-arguments.
    • Added host-side type tokens and updated callable encoding/decoding to carry type_args across the boundary.
  • Bug Fixes

    • Correctly preserved instance type_args during wire encoding.
    • Standardized canonical class/interface type naming for more reliable host typemap resolution.
  • Tests

    • Re-enabled previously skipped Python and TypeScript generic round-trip tests, expanding coverage.

@vercel

vercel Bot commented Jun 22, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
beps Ready Ready Preview, Comment Jun 22, 2026 10:49pm
promptfiddle Ready Ready Preview, Comment Jun 22, 2026 10:49pm
promptfiddle2 Ready Ready Preview, Comment Jun 22, 2026 10:49pm

Request Review

@coderabbitai

coderabbitai Bot commented Jun 22, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Implements end-to-end generic class type-argument propagation for the Node.js SDK. A new wire_ty.ts module defines BamlType token types with lowering/raising functions. The TS callable factories extract $types and encode them as wire type_args; the Rust bridge decodes and injects them into function call frames. The Rust value_encode path serializes instance type_args as wire generic_args with render_dotted FQNs. The TS code generator emits $types/$generic scaffolding for generic classes. Previously skipped generic roundtrip tests are enabled.

Changes

Generic type-arg propagation: TS encoder → wire → Rust engine → decoder

Layer / File(s) Summary
New BamlType token module and wire lowering/raising
baml_language/sdks/nodejs/bridge_nodejs/typescript_src/wire_ty.ts
Introduces Never symbol, BamlPrimitiveToken/BamlClassCtor/BamlType recursive token union, PRIMITIVE_KIND table, lowerTypeToWireTy (token → ITy), outboundTyToBamlType (IBamlTy → BamlType), and classWireTy internal helper.
TS callable factories: GenericParams, buildTypeArgs, generic instance encoding
baml_language/sdks/nodejs/bridge_nodejs/typescript_src/define_function.ts, baml_language/sdks/nodejs/bridge_nodejs/typescript_src/proto.ts, baml_language/sdks/nodejs/bridge_nodejs/typescript_src/index.ts
define_function.ts adds UNSET, GenericParams, resolveTypesOption, receiverTypes, buildTypeArgs, and updates defineFunction/defineInstanceFunction to pass typeArgs to encodeCallArgs. proto.ts adds genericParamNames, a generic class instance encoding branch in setInboundValue (using class_ty from $types), and builds CallFunctionArgs.type_args. index.ts re-exports new public symbols.
TS decode path: $types reconstruction in decodeClass
baml_language/sdks/nodejs/bridge_nodejs/typescript_src/proto.ts
decodeClass reads wire genericArgs, maps them through outboundTyToBamlType, and defines a non-enumerable $types property on the decoded instance when the class has $generic.
Rust bridge: type_args in DecodedCallArgs and call context
baml_language/sdks/nodejs/bridge_nodejs/Cargo.toml, baml_language/sdks/nodejs/bridge_nodejs/src/runtime.rs
Cargo.toml adds indexmap. DecodedCallArgs gains type_args; decode_args parses protobuf type_args via proto_ty_args_to_named; both sync and async call paths pass .with_type_args(decoded.type_args) to the call-context builder.
Rust value_encode: instance generic_args and render_dotted FQN
baml_language/crates/bridge_ctypes/src/value_encode.rs
BexExternalValue::Instance now destructures and encodes type_args as wire generic_args via ty_args_to_baml_generic_args (was empty vec). ty_to_baml_ty_name switches class/interface wire names from display_name() to render_dotted(false).
TS codegen: $types/$generic and factory_tail in leaf.rs
baml_language/sdks/nodejs/sdkgen_typescript_node/src/leaf.rs
RenderState tracks uses_baml_type; runtime_import_line conditionally imports BamlType; render_class_ts emits optional $types and static $generic for generic classes; render_method_binding_ts and render_function_ts use new factory_tail and generics_object_literal helpers to pass { typeParams, classTypeParams } to defineFunction/defineInstanceFunction.
Test enablement and encodeCallArgs signature updates
baml_language/sdk_tests/crates/python_pydantic2/type_shapes/customizable/test_generic.py, baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_*.test.ts, baml_language/sdks/nodejs/bridge_nodejs/tests/*
Enables previously skipped tests for Python test_generic, test_generic_wrapper_get_value, and five TS generic roundtrip/stream/boundary cases. Updates host_callable.test.ts and test_stream.test.ts to pass callId: 1n in the encodeCallArgs options object.

Sequence Diagram(s)

sequenceDiagram
  rect rgba(173, 216, 230, 0.5)
    note over TSCaller,setInboundValue: TS → Wire (encode path)
  end
  participant TSCaller as TS Caller (with $types)
  participant defineFunction as defineFunction / defineInstanceFunction
  participant buildTypeArgs as buildTypeArgs
  participant setInboundValue as setInboundValue (proto.ts)
  participant encodeCallArgs as encodeCallArgs (proto.ts)
  participant Wire as CallFunctionArgs (proto)
  participant RustBridge as decode_args (runtime.rs)
  participant CtxBuilder as function_call_context_builder
  participant Engine as BAML Engine

  TSCaller->>defineFunction: call(kwargs, { $types })
  defineFunction->>buildTypeArgs: self, types, typeParams, classTypeParams
  buildTypeArgs-->>defineFunction: ordered [typeVar, BamlType][] pairs
  defineFunction->>encodeCallArgs: { kwargs, typeArgs, callId }
  encodeCallArgs->>setInboundValue: generic class instance arg
  setInboundValue-->>encodeCallArgs: class_value { class_ty { typeArgs } }
  encodeCallArgs->>Wire: CallFunctionArgs { kwargs, type_args[], callId }

  rect rgba(144, 238, 144, 0.5)
    note over Wire,TSCaller: Wire → Rust → TS (decode path)
  end
  Wire->>RustBridge: args.type_args[]
  RustBridge->>CtxBuilder: decoded.type_args (named map)
  CtxBuilder->>Engine: call frame with type bindings
  Engine-->>CtxBuilder: result with genericArgs[]
  CtxBuilder->>TSCaller: instance.$types repopulated via outboundTyToBamlType
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~90+ minutes

Possibly related PRs

  • BoundaryML/baml#3431: Both PRs update the Rust/FFI encoding of outbound type names to carry generic type arguments—main PR wires type_args into BamlValueClass/BamlTyName.generic_args and adjusts canonical class/interface FQNs, while retrieved PR restructures the outbound proto/encoding to a unified BamlTyName with generic_args support.
  • BoundaryML/baml#3508: Both PRs modify baml_language/crates/bridge_ctypes/src/value_encode.rs—the retrieved PR introduces TaggedHeapHandle/typed outbound handle encoding (relying on ty_to_baml_ty_name), while the main PR changes ty_to_baml_ty_name's wire-name rendering and extends external_to_outbound's generic/type-args handling for those instances.
  • BoundaryML/baml#3685: Both PRs touch the Node/Python callable host-argument plumbing (notably define_function/call-arg construction), with the main PR adding generic type_args wiring and the retrieved PR adding optional/defaulted host-arg ($opts/UNSET) handling.

Poem

🐇 Hoppity-hop through the FFI gate,
$types in hand, I carry my state!
generic_args packed on the wire so neat,
render_dotted FQNs—no skipped tests to beat!
Round-trip complete, the type slots align,
A bunny who generics? Oh, I do just fine! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The PR title accurately summarizes the main changes: adding Python outbound generics support and Node.js inbound/outbound generic handling across multiple SDK bridges.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sam/generic3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Jun 22, 2026 •

Copy link
Copy Markdown

⏭️ Performance benchmarks were skipped

Perf benchmarks (CodSpeed) are opt-in on pull requests — they no longer run on every push. They always run automatically after merge to canary/main.

To run them on this PR, do any of the following, then push a commit (or re-run CI):

  • Add RUN_CODSPEED=1 to the PR description, or
  • Include run-perf or /perf in the PR title or any commit message.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 41a35778da

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

let trailing = optional_param_names_arg(&optional_params);
let optional_arg = optional_param_names_arg(&optional_params);
// Free functions bind only their own `<...>` params (no generic receiver).
let tail = factory_tail(&optional_arg, &f.generic_params, &[]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Include $types in generic callable signatures

When f.generic_params is non-empty this starts emitting the runtime generics object, so defineFunction now calls resolveTypesOption and throws unless the caller supplies $types. The generated surface type is still built by fn_type_sig just above, which only contains the BAML value parameters/optional args, so functions like one_type_arg<T>() or identity<T>(x: T) are emitted as <T>() => string / <T>(x: T) => T while the only working runtime call is an extra options argument such as { $types: { T: 'int' } }. In TS users cannot call these generic functions without a cast, and the natural typed calls fail at runtime with “$types is required”.

Useful? React with 👍 / 👎.

@vercel
vercel Bot temporarily deployed to Preview – promptfiddle June 22, 2026 21:41 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@baml_language/sdks/nodejs/bridge_nodejs/typescript_src/define_function.ts`:
- Around line 236-239: The comment for the typeArgsFor function states that it
"eagerly rejects $types on a non-generic call," but the actual code silently
ignores $types when isGeneric is false by returning an empty array. Either
update the code to validate the types option unconditionally by calling
resolveTypesOption(built.types, []) instead of just returning [], or update the
comment to accurately reflect that $types is silently ignored rather than
rejected on non-generic calls. Ensure that whichever approach is taken, the
comment and code behavior are aligned.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: ddb75625-6050-40c3-85e5-41670ce5e888

📥 Commits

Reviewing files that changed from the base of the PR and between df6fb69 and 41a3577.

⛔ Files ignored due to path filters (17)
  • baml_language/Cargo.lock is excluded by !**/*.lock
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.js.map is excluded by !**/dist/**, !**/*.map
📒 Files selected for processing (15)
  • baml_language/crates/bridge_ctypes/src/value_encode.rs
  • baml_language/sdk_tests/crates/python_pydantic2/type_shapes/customizable/test_generic.py
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_forward_refs.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_generics.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_streams.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/test_generic.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/Cargo.toml
  • baml_language/sdks/nodejs/bridge_nodejs/src/runtime.rs
  • baml_language/sdks/nodejs/bridge_nodejs/tests/host_callable.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/tests/test_stream.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/define_function.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/index.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/proto.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/wire_ty.ts
  • baml_language/sdks/nodejs/sdkgen_typescript_node/src/leaf.rs
💤 Files with no reviewable changes (1)
  • baml_language/sdk_tests/crates/python_pydantic2/type_shapes/customizable/test_generic.py

@github-actions

Copy link
Copy Markdown

No description provided.

@vercel
vercel Bot temporarily deployed to Preview – beps June 22, 2026 22:22 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 22, 2026 22:28 Inactive
Bring the TypeScript/Node SDK to parity with Python for generic classes and
functions, and make outbound decoding repopulate a generic instance's concrete
type args in both SDKs.

- codegen (sdkgen_typescript_node): emit a static `$generic` param list and an
  optional `$types` field on every generic class; pass type_params/
  classTypeParams to defineFunction/defineInstanceFunction.
- bridge_nodejs: encode a generic instance as a FQN-tagged class_value with the
  value-level class_ty channel (absent $types -> Ty::Unknown); build/encode
  CallFunctionArgs.type_args; decodeClass repopulates $types (non-enumerable)
  from the wire generic_args. Thread CallFunctionArgs.type_args into the engine
  call context (was dropped on the Node side).
- bridge_ctypes: outbound encoder now sends a generic instance's type_args as
  BamlValueClass.name.generic_args, using the canonical FQN (render_dotted) so
  the host typemap resolves it.
- re-enable the generic round-trip + instance-method tests (TS + Python).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@vercel
vercel Bot temporarily deployed to Preview – beps June 22, 2026 22:31 Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@baml_language/sdks/nodejs/bridge_nodejs/typescript_src/proto.ts`:
- Around line 233-252: In the generic class instance branch where `fqn` is
obtained from `getTypeMap().jsTypeToBamlType()`, add a guard to check that `fqn`
is defined before constructing the `classValue` object. The `fqn` variable may
be `undefined` if the constructor is unmapped, and without this guard the code
will create a malformed protobuf message with `name: undefined`. This guard
should be added similar to how the handle-backed class instance path (which
checks `if (fqn)` at lines 209-221) protects against this condition, wrapping
the classValue assignment and return statement within an `if (fqn)` check.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 396e5198-2749-4cce-ba7f-380badaa7ffa

📥 Commits

Reviewing files that changed from the base of the PR and between c042b1a and ed57ca4.

⛔ Files ignored due to path filters (17)
  • baml_language/Cargo.lock is excluded by !**/*.lock
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/define_function.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/index.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/proto.js.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.d.ts is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.d.ts.map is excluded by !**/dist/**, !**/*.map
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.js is excluded by !**/dist/**
  • baml_language/sdks/nodejs/bridge_nodejs/dist/wire_ty.js.map is excluded by !**/dist/**, !**/*.map
📒 Files selected for processing (15)
  • baml_language/crates/bridge_ctypes/src/value_encode.rs
  • baml_language/sdk_tests/crates/python_pydantic2/type_shapes/customizable/test_generic.py
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_forward_refs.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_generics.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_streams.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/test_generic.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/Cargo.toml
  • baml_language/sdks/nodejs/bridge_nodejs/src/runtime.rs
  • baml_language/sdks/nodejs/bridge_nodejs/tests/host_callable.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/tests/test_stream.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/define_function.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/index.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/proto.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/wire_ty.ts
  • baml_language/sdks/nodejs/sdkgen_typescript_node/src/leaf.rs
💤 Files with no reviewable changes (1)
  • baml_language/sdk_tests/crates/python_pydantic2/type_shapes/customizable/test_generic.py
✅ Files skipped from review due to trivial changes (2)
  • baml_language/sdks/nodejs/bridge_nodejs/Cargo.toml
  • baml_language/sdks/nodejs/bridge_nodejs/tests/host_callable.test.ts
🚧 Files skipped from review as they are similar to previous changes (11)
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_forward_refs.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_generics.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/test_generic.test.ts
  • baml_language/sdks/nodejs/bridge_nodejs/tests/test_stream.test.ts
  • baml_language/sdk_tests/crates/typescript_node/type_shapes/customizable/roundtrip_streams.test.ts
  • baml_language/crates/bridge_ctypes/src/value_encode.rs
  • baml_language/sdks/nodejs/bridge_nodejs/src/runtime.rs
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/index.ts
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/wire_ty.ts
  • baml_language/sdks/nodejs/sdkgen_typescript_node/src/leaf.rs
  • baml_language/sdks/nodejs/bridge_nodejs/typescript_src/define_function.ts

@vercel
vercel Bot temporarily deployed to Preview – promptfiddle2 June 22, 2026 22:37 Inactive
@vercel
vercel Bot temporarily deployed to Preview – promptfiddle June 22, 2026 22:49 Inactive
@sxlijin
sxlijin enabled auto-merge June 22, 2026 22:50
@sxlijin sxlijin changed the title feat(generics): SDK $types channel for TS + Python generic instances feat(bridges): python outbound generics, nodejs inbound explicit and outbound Jun 22, 2026
@sxlijin
sxlijin added this pull request to the merge queue Jun 22, 2026
Merged via the queue into canary with commit 5d46d2d Jun 22, 2026
52 checks passed
@sxlijin
sxlijin deleted the sam/generic3 branch June 22, 2026 23:20

This branch was previously deployed

3 inactive deployments
Preview – promptfiddle — ed57ca4a Deployed Jun 22, 2026 by vercel[bot]
Preview – promptfiddle2 — ed57ca4a Deployed Jun 22, 2026 by vercel[bot]
Preview – beps — ed57ca4a Deployed Jun 22, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant