Skip to content

fix(deps): depend on the @launchdarkly/ai-server release each package needs - #119

Merged
XieX merged 1 commit into
mainfrom
xie/node-workspace-ranges
Oct 8, 2026
Merged

XieX merged 1 commit into
mainfrom
xie/node-workspace-ranges

Conversation

@XieX

@XieX XieX commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Pins @launchdarkly/ai-server to a specific version rather than "*", and uses the node-workspace plugin for release-please to automatically update it as part of the release workflow.

Details

Every package that depends on @launchdarkly/ai-server asks for "*". A consumer whose lockfile already holds an older ai-server keeps it when they upgrade a handler or @launchdarkly/ai-node, because "*" is still satisfied. That is already a problem on main:

  • Every handler imports normalizeModelParameters / pickForwardedModelParameters, which published @launchdarkly/ai-server@0.3.0 does not export. As it stands, the next release (chore: release main #85) would publish handlers that fail at import against a locked 0.3.0.
  • feat(skills): Agent Skills #71's @launchdarkly/ai-node/experimental re-exports @launchdarkly/ai-server/experimental. A pre-release review installed the packed ai-node with the published ai-server 0.3.0 and got ERR_PACKAGE_PATH_NOT_EXPORTED.

Change

  • release-please-config.json: add the node-workspace plugin, so each release PR rewrites dependents' ranges to the version it releases.
  • All nine dependents: "*" → "^0.3.0". The plugin keeps a ^/~/>= prefix, but it turns "*" into an exact pin (0.4.0) and keeps it exact from then on.

Why not just pin ^0.4.0 now

Yarn v1 links a workspace sibling only when its version satisfies the range. Local packages/client stays at 0.3.0 until the release PR bumps it, so ^0.4.0 makes yarn go to npm, where 0.4.0 doesn't exist, and yarn install --frozen-lockfile fails with Couldn't find any versions for "@launchdarkly/ai-server" that matches "^0.4.0". ^0.3.0 links the local package now, and ^0.4.0 links it once the release PR has bumped it. yarn.lock is unchanged either way, since yarn v1 doesn't lock workspace packages.

Policy change to be aware of

node-workspace gives every dependent a patch release, with a "Dependencies" changelog entry, whenever ai-server releases. It does this even when the dependent has no changes of its own, and release-please 17.6.0 has no option to turn it off (always-link-local is parsed but never read: googleapis/release-please#2876). The nine dependents are already in the pending release, so this release is unaffected.

Verification

  • yarn install --frozen-lockfile, yarn lint:pkg (sherif), and the biome pre-commit hooks pass.
  • I ran release-please release-pr --dry-run (17.6.0, the version release-please-action v5.0.0 bundles) against this branch. It proposes the same versions as chore: release main #85: ai-server 0.4.0, ai-node 0.3.0, ai-otel 0.2.0, handlers 0.4.0, vercel-* 0.2.0. Each of the nine dependents gets @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0 in its package.json and changelog.

Merge this before #85. It doesn't conflict with #71, which doesn't touch these dependency lines or the release config.

The Python SDK has the same unpinned launchdarkly-ai-server dependencies, but doesn't need a similar change yet.

🤖 Generated with Claude Code, updated by @XieX


Note

Overview
Replaces wildcard @launchdarkly/ai-server dependencies ("*") with ^0.3.0 across nine workspace packages (ai-node, claude/openai/langchain/vercel agents and messages). That forces installs/upgrades to pull a compatible ai-server instead of keeping an older lockfile version that still satisfies *, which was breaking imports and experimental re-exports against published 0.3.0.

Adds the node-workspace plugin to release-please-config.json so future release PRs automatically bump dependents’ ai-server ranges when packages/client releases (e.g. ^0.3.0 → ^0.4.0 on the next cut).

Reviewed by Cursor Bugbot for commit 1f3b9d3. Bugbot is set up for automated code reviews on this repo. Configure here.

… needs

Every package that depends on @launchdarkly/ai-server asked for "*". A
consumer whose lockfile already holds an older ai-server keeps it when it
upgrades a handler or ai-node, because "*" is still satisfied. The handlers
on main already import normalizeModelParameters and
pickForwardedModelParameters, which published ai-server 0.3.0 does not
export, and @launchdarkly/ai-node/experimental re-exports a subpath that
only the next ai-server release will have.

Ranges are now ^0.3.0, and release-please's node-workspace plugin rewrites
them to ^<new version> in each release PR. The plugin keeps a ^ prefix but
turns "*" into an exact pin, which is why the ranges change here as well.
The ranges can't be pinned to the next version by hand: yarn v1 links a
workspace sibling only when its version satisfies the range, so ^0.4.0
against the local 0.3.0 fails `yarn install --frozen-lockfile`.

The plugin also gives every dependent a patch release whenever ai-server
releases, whether or not it has changes of its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@XieX
XieX requested a review from andrewklatzke October 7, 2026 23:04

@jeffdupont jeffdupont 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.

The problem is real, and this should land before #85. The only published @launchdarkly/ai-server is still 0.3.0 on npm. Its exports has only ".", and it has no pickForwardedModelParameters. So with "*", a consumer with 0.3.0 locked who upgrades a handler or ai-node gets an import failure, or ERR_PACKAGE_PATH_NOT_EXPORTED for /experimental. The reasoning about the yarn v1 workspace link and ^0.3.0 makes sense. On 0.x, ^0.3.0 means <0.4.0, so the fix depends on release-please rewriting the range to ^0.4.0. I did not rerun the release-please dry run; I am relying on yours.

Two things I would settle before 1.0:

  1. Should this be a peer dependency? Inline, on langchain-messages.
  2. Python has the same gap, and it arrives with py #107. Once #107 merges, every Python handler imports launchdarkly_ai_server.parameter_forwarding, for example claude-agents/handler.py:50 and langchain-agents/handler.py:33. That module is not on Python main (0b4df05), so the latest on PyPI (0.2.4) cannot have it. The handlers depend on a bare "launchdarkly-ai-server", so a user with 0.2.4 installed who upgrades a handler gets an ImportError. "Doesn't need a similar change yet" is true only until #107 is released. Could the Python lower bounds land alongside #107, so the fix ships in both SDKs?

Smaller: the patch release for every dependent on each ai-server release is a real cost, as you say. If changelog noise matters, it may be worth a line in the release notes saying those bumps are dependency-only.

Comment thread packages/langchain-messages/package.json
@XieX

XieX commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor Author

@jeffdupont, thanks.

  1. Peer dependency: replied inline. node-workspace needs updatePeerDependencies: true to rewrite peer ranges. We'll decide this before 1.0, separately from this PR, which fixes "*" for chore: release main #85 either way.
  2. Python: agreed. "Doesn't need a similar change yet" holds only until python-ai-sdk#107 releases, because that's when the handlers start importing launchdarkly_ai_server.parameter_forwarding, which 0.2.4 doesn't have. The handlers' launchdarkly-ai-server lower bounds should ship with fix(skills): close four behaviour gaps with the Python SDK #107, so both SDKs get the fix. I've flagged it for coordination with #107.

On the dependency-only patch bumps: agreed that a line in the release notes saying so is worth adding when the release PR goes out.

@XieX
XieX merged commit 9c2a56b into main Oct 8, 2026
11 checks passed
@XieX
XieX deleted the xie/node-workspace-ranges branch October 8, 2026 19:10
@github-actions github-actions Bot mentioned this pull request Oct 8, 2026
andrewklatzke pushed a commit that referenced this pull request Oct 8, 2026
…ing (#123)

## Summary

Lists Agent Skills changes under an **Experimental** heading in each
package's changelog, as TESTING.md §0.1 promises for an experimental
feature. Spec: launchdarkly/ai-sdks-monorepo#50.
Python twin: launchdarkly/python-ai-sdk#150.

## How

`release-please-config.json` gains `changelog-sections`. Rows matching
`feat`, `fix` and `perf` with scope `skills` map to "Experimental". The
rest of the list reproduces the defaults release-please 17.6.0 uses for
the Node strategy (the `conventionalcommits` preset's list), so every
other commit renders exactly as before.

Matching on scope works because release-please hands
`changelog-sections` to `conventional-changelog-conventionalcommits`
6.1.0 unchanged (`manifest.ts:1397`), and the preset's `findTypeEntry`
checks an entry's `scope` (`writer-opts.js:60-71`). The first match
wins, so the scoped rows come first, and "Experimental" is therefore the
first heading. `scope` isn't in release-please's documented config
schema. Rerun the checks below when upgrading release-please.

`AGENTS.md` gains a "PR Titles and the Changelog" section with the
convention:
- an experimental change uses its feature's scope, and only that one
scope;
- a PR that mixes core and experimental changes is split, or uses
`BEGIN_COMMIT_OVERRIDE`;
- a breaking experimental change uses `!` while the package is 0.x, and
drops it after 1.0.

The block sits at the end of the file so it doesn't conflict with #119,
which adds `plugins` after `bootstrap-sha` (`git merge-tree` is clean).

## Verification

- **Rendering:** I ran release-please 17.6.0's own commit parser and
`DefaultChangelogNotes` against this config, with synthetic commits.
- Non-experimental commits render byte-for-byte the same as with the
defaults.
- `feat(skills)`, `fix(skills)`, `perf(skills)` and `feat(skills)!` land
under Experimental. A breaking one also appears in "⚠ BREAKING CHANGES".
- `docs(skills)` stays hidden, `feat(skills,client)` lands under
Features, and `feat(client)` stays under Features.
- **Dry run:** `release-please release-pr --dry-run` against this branch
proposes the same packages, versions and notes as release PR #85, apart
from the date. Nothing on `main` uses the `skills` scope yet.
- **Agent Skills:** #71 is retitled `feat(skills): Agent Skills`, so its
squash commit lands under Experimental.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> Configures **release-please** so Agent Skills work
(`feat`/`fix`/`perf` with scope `skills`) appears under an
**Experimental** changelog heading, while the rest of the section list
mirrors the default Node/conventional-commits preset so other commits
render unchanged.
> 
> Adds **PR Titles and the Changelog** to `AGENTS.md`, documenting
squash-merge titles, the single `skills` scope, mixed core/experimental
PRs (`BEGIN_COMMIT_OVERRIDE`), breaking experimental commits while
packages are 0.x, and removing experimental rows when a feature
graduates.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
5c1e697. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
XieX added a commit that referenced this pull request Oct 9, 2026
Brings in #115 (helper usage), #123 (Experimental changelog heading), #78
(bundler import diagnostics) and #119 (node-workspace ranges).

lifecycle.ts conflict: keep the branch's init/shutdown structure and add
main's usage flush beside each flushAiSdkInfo call (already-initialized,
BYOC, and after a successful options-path await), so a failed or abandoned
init never flushes and a retry flushes once. shutdown() resets usage with
sdk-info, only when a client existed, as main's early return did; held
helpers survive a no-client shutdown. shutdownTelemetry() keeps the
branch's OTel-globals teardown and gains main's ESM warning reset.

Root surface: add main's configInternal, createHandlerInternal,
graphInternal, inspectConfigInternal and reportUsage to ROOT_VALUES and
regenerate etc/ai-server.api.md. The experimental report is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
andrewklatzke pushed a commit that referenced this pull request Oct 9, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>@launchdarkly/ai-claude-agents: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-claude-agents-0.3.0...@launchdarkly/ai-claude-agents-0.4.0)
(2026-10-09)


### Features

* **AIC-3211:** record each graph node as its own tracking event
([#91](#91))
([2df2923](2df2923))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))


### Bug Fixes

* **claude-agents:** forward only an allowlist of query() options from
model.parameters
([37bd8a7](37bd8a7))
* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-claude-messages: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-claude-messages-0.3.0...@launchdarkly/ai-claude-messages-0.4.0)
(2026-10-09)


### Features

* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))
* **claude-messages:** forward only Messages API keys from
model.parameters
([9a1819e](9a1819e))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* **openai-messages:** only exclude model.parameters keys that would
break the handler
([39e342d](39e342d))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **SEC-9507:** authorize message-handler tools from the active
variation ([#90](#90))
([c16fe93](c16fe93))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-langchain-agents: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-langchain-agents-0.3.0...@launchdarkly/ai-langchain-agents-0.4.0)
(2026-10-09)


### Features

* **AIC-3211:** record each graph node as its own tracking event
([#91](#91))
([2df2923](2df2923))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** forward only a per-model-class allowlist of constructor
fields
([0990a51](0990a51))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-langchain-messages: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-langchain-messages-0.3.0...@launchdarkly/ai-langchain-messages-0.4.0)
(2026-10-09)


### Features

* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** forward only a per-model-class allowlist of constructor
fields
([0990a51](0990a51))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **SEC-9507:** authorize message-handler tools from the active
variation ([#90](#90))
([c16fe93](c16fe93))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-node: 0.3.0</summary>

##
[0.3.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-node-0.2.0...@launchdarkly/ai-node-0.3.0)
(2026-10-09)


### Experimental

* **skills:** add experimental Agent Skills under
`@launchdarkly/ai-server/experimental`, re-exported from
`@launchdarkly/ai-node/experimental`
([a242659](a242659))


### Features

* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))
* **build:** dual ESM/CommonJS output via tsup
([d8e62e4](d8e62e4))
* **client:** `initClient(client, options)` accepts telemetry options
for a pre-initialized client
([a242659](a242659))
* **client:** warn about unrecognized `initClient` options instead of
ignoring them silently
([a242659](a242659))


### Bug Fixes

* **client:** `shutdownTelemetry()` releases the OpenTelemetry globals
the SDK registered, so a later `initClient` exports spans again
([a242659](a242659))
* **client:** a repeat `initClient(client)` returns the client already
set instead of replacing it
([a242659](a242659))
* **client:** an `initClient` that fails, or that `shutdown()`
interrupts, closes the client it built, and a failure is no longer
cached, so the next call retries
([a242659](a242659))
* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-openai-agents: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-openai-agents-0.3.0...@launchdarkly/ai-openai-agents-0.4.0)
(2026-10-09)


### Features

* **AIC-3210:** support streaming responses from agent graph nodes
([#84](#84))
([24671e8](24671e8))
* **AIC-3211:** record each graph node as its own tracking event
([#91](#91))
([2df2923](2df2923))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* **openai-agents:** forward only an allowlist of ModelSettings fields
from model.parameters
([398e935](398e935))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **telemetry:** report OpenAI tool arguments as an object, not a JSON
string ([#68](#68))
([d614791](d614791))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-openai-messages: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-openai-messages-0.3.0...@launchdarkly/ai-openai-messages-0.4.0)
(2026-10-09)


### Features

* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))
* **openai-messages:** forward only Responses API keys from
model.parameters
([5c51dc9](5c51dc9))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* **openai-messages:** only exclude model.parameters keys that would
break the handler
([39e342d](39e342d))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **SEC-9507:** authorize message-handler tools from the active
variation ([#90](#90))
([c16fe93](c16fe93))
* **telemetry:** report OpenAI tool arguments as an object, not a JSON
string ([#68](#68))
([d614791](d614791))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-otel: 0.2.0</summary>

##
[0.2.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-otel-0.1.1...@launchdarkly/ai-otel-0.2.0)
(2026-10-09)


### Features

* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))
* **build:** dual ESM/CommonJS output via tsup
([d8e62e4](d8e62e4))
</details>

<details><summary>@launchdarkly/ai-server: 0.4.0</summary>

##
[0.4.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-server-0.3.0...@launchdarkly/ai-server-0.4.0)
(2026-10-09)


### Experimental

* **skills:** add experimental Agent Skills under
`@launchdarkly/ai-server/experimental`, re-exported from
`@launchdarkly/ai-node/experimental`
([a242659](a242659))


### Features

* **AIC-3210:** support streaming responses from agent graph nodes
([#84](#84))
([24671e8](24671e8))
* **AIC-3211:** record each graph node as its own tracking event
([#91](#91))
([2df2923](2df2923))
* **AIC-3416:** say the real reason when a bundler breaks an optional
import [3/4]
([#78](#78))
([7ee4d5a](7ee4d5a))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))
* **build:** build the AI SDK like the other LaunchDarkly JS SDKs so
CommonJS apps can load it (2/4)
([#77](#77))
([2cda755](2cda755))
* **client:** `initClient(client, options)` accepts telemetry options
for a pre-initialized client
([a242659](a242659))
* **client:** restore pickForwardedModelParameters for closed provider
request types
([f7f85d0](f7f85d0))
* **client:** warn about unrecognized `initClient` options instead of
ignoring them silently
([a242659](a242659))


### Bug Fixes

* **client:** `shutdownTelemetry()` releases the OpenTelemetry globals
the SDK registered, so a later `initClient` exports spans again
([a242659](a242659))
* **client:** a repeat `initClient(client)` returns the client already
set instead of replacing it
([a242659](a242659))
* **client:** an `initClient` that fails, or that `shutdown()`
interrupts, closes the client it built, and a failure is no longer
cached, so the next call retries
([a242659](a242659))
* **handlers:** camelize snake_case model.parameters for framework
handlers
([75c6287](75c6287))
* **judges:** a judge's own config must not fail the run it grades
([#17](#17))
([6e85cac](6e85cac))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **vercel-messages:** map model.parameters onto AI SDK call settings
([d2a52ae](d2a52ae))
* **vercel:** tag vercelEvaluate spans with run identity
([#100](#100))
([d32bede](d32bede))
</details>

<details><summary>@launchdarkly/ai-vercel-agents: 0.2.0</summary>

##
[0.2.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-vercel-agents-0.1.0...@launchdarkly/ai-vercel-agents-0.2.0)
(2026-10-09)


### Features

* **AIC-3408:** add Vercel AI SDK messages and agents adapters
([#83](#83))
([7d08c9c](7d08c9c))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **vercel-agents:** map model.parameters onto ToolLoopAgent call
settings
([4241d75](4241d75))
* **vercel:** never forward headers, providerOptions, maxRetries or
timeout from model.parameters
([0a616fb](0a616fb))
* **vercel:** send image content as AI SDK file parts
([#99](#99))
([2856abc](2856abc))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

<details><summary>@launchdarkly/ai-vercel-messages: 0.2.0</summary>

##
[0.2.0](https://github.com/launchdarkly/js-ai-sdk/compare/@launchdarkly/ai-vercel-messages-0.1.0...@launchdarkly/ai-vercel-messages-0.2.0)
(2026-10-09)


### Features

* **AIC-3408:** add Vercel AI SDK messages and agents adapters
([#83](#83))
([7d08c9c](7d08c9c))
* **AIC-3495:** record which public helpers an application calls
([#115](#115))
([aeb4019](aeb4019))


### Bug Fixes

* **deps:** depend on the @launchdarkly/ai-server release each package
needs ([#119](#119))
([9c2a56b](9c2a56b))
* **langchain:** stop forwarding additionalModelRequestFields to
ChatBedrockConverse
([f6268fd](f6268fd))
* pass AI Config model parameters through to every provider handler
([#73](#73))
([993225f](993225f))
* **vercel-messages:** map model.parameters onto AI SDK call settings
([d2a52ae](d2a52ae))
* **vercel:** never forward headers, providerOptions, maxRetries or
timeout from model.parameters
([0a616fb](0a616fb))
* **vercel:** send image content as AI SDK file parts
([#99](#99))
([2856abc](2856abc))
* **vercel:** tag vercelEvaluate spans with run identity
([#100](#100))
([d32bede](d32bede))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/ai-server bumped from ^0.3.0 to ^0.4.0
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Overview**
> **Release Please monorepo cut** that bumps published versions in
`.release-please-manifest.json`, each package’s `package.json` /
`src/version.ts`, and adds matching **CHANGELOG** sections (including
first changelogs for the Vercel packages). Provider packages now depend
on **`@launchdarkly/ai-server` ^0.4.0**.
> 
> The documented release for **`@launchdarkly/ai-server` 0.4.0** (and
aligned provider bumps) includes **dual ESM + CommonJS builds**, **agent
graph node streaming**, **per-node tracking events** and **public-helper
usage telemetry**, **`initClient` / `shutdownTelemetry` lifecycle
fixes**, and **experimental Agent Skills** under
`@launchdarkly/ai-server/experimental`. Cross-cutting fixes in the notes
cover **AI Config `model.parameters` forwarding** (allowlists,
snake_case → camelCase), **message-handler tool authorization
(SEC-9507)**, and **Vercel adapter** parameter mapping and multimodal
content handling.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
4acc72c. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

2 participants