Skip to content

feat: wire registerDebugOverrides through client common#1368

Merged
joker23 merged 2 commits into
mainfrom
skz/sdk-1997/client-test-data-wiring
May 7, 2026
Merged

feat: wire registerDebugOverrides through client common#1368
joker23 merged 2 commits into
mainfrom
skz/sdk-1997/client-test-data-wiring

Conversation

@joker23
Copy link
Copy Markdown
Contributor

@joker23 joker23 commented May 7, 2026

This PR will rewire the registerDebugOverrides callback to enable the LDDebugOverride plugins to all client side sdks.

The wiring will require setting of an internal options so this feature is only enabled for electron, brower, and react sdks for now.


Note

Medium Risk
Touches shared client initialization (LDClientImpl constructor) to invoke plugin debug registration earlier, which could affect plugin behavior/order during startup across SDKs. Changes are scoped to optional internal wiring and include unit coverage, but impact spans multiple client implementations.

Overview
Adds a new internal LDClientInternalOptions.registerDebugOverrides callback and invokes it during LDClientImpl construction when FlagManager.getDebugOverride() is available, enabling plugins to receive debug override controls as part of client initialization.

Updates Browser and Electron clients to pass registerDebugOverrides that calls safeRegisterDebugOverridePlugins, and removes the prior Browser-side post-plugin-registration debug override wiring.

Extracts LDDebugOverride into a dedicated API type (api/LDDebugOverride) and updates imports/exports accordingly, with new unit tests covering safeRegisterDebugOverridePlugins behavior (skipping missing hooks and continuing after exceptions).

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

@joker23
Copy link
Copy Markdown
Contributor Author

joker23 commented May 7, 2026

@cursor review

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

@launchdarkly/js-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 26281 bytes
Compressed size limit: 29000
Uncompressed size: 128971 bytes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

@launchdarkly/js-client-sdk size report
This is the brotli compressed size of the ESM build.
Compressed size: 31906 bytes
Compressed size limit: 34000
Uncompressed size: 113658 bytes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

@launchdarkly/js-client-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 38487 bytes
Compressed size limit: 39000
Uncompressed size: 211236 bytes

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

@launchdarkly/browser size report
This is the brotli compressed size of the ESM build.
Compressed size: 179498 bytes
Compressed size limit: 200000
Uncompressed size: 830837 bytes

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 42d8cbd. Configure here.

@joker23 joker23 marked this pull request as ready for review May 7, 2026 22:08
@joker23 joker23 requested a review from a team as a code owner May 7, 2026 22:08
import { Hook, type LDOptions } from '../api';
import { LDContext } from '../api/LDContext';
import { LDInspection } from '../api/LDInspection';
import type { LDDebugOverride } from '../flag-manager/FlagManager';
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We should probably move this type to api/ if we can.

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

@joker23 joker23 merged commit 9011c2a into main May 7, 2026
44 checks passed
@joker23 joker23 deleted the skz/sdk-1997/client-test-data-wiring branch May 7, 2026 22:33
@github-actions github-actions Bot mentioned this pull request May 7, 2026
jsonbailey pushed a commit that referenced this pull request May 19, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>browser: 0.1.21</summary>

##
[0.1.21](browser-v0.1.20...browser-v0.1.21)
(2026-05-19)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-client-sdk bumped from 4.6.5 to 4.7.0
</details>

<details><summary>jest: 1.0.16</summary>

##
[1.0.16](jest-v1.0.15...jest-v1.0.16)
(2026-05-19)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
* @launchdarkly/react-native-client-sdk bumped from ~10.17.4 to ~10.17.5
</details>

<details><summary>js-client-sdk: 4.7.0</summary>

##
[4.7.0](js-client-sdk-v4.6.5...js-client-sdk-v4.7.0)
(2026-05-19)


### Features

* wire registerDebugOverrides through client common
([#1368](#1368))
([9011c2a](9011c2a))


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-client-sdk-common bumped from 1.26.3 to 1.27.0
</details>

<details><summary>js-client-sdk-common: 1.27.0</summary>

##
[1.27.0](js-client-sdk-common-v1.26.3...js-client-sdk-common-v1.27.0)
(2026-05-19)


### Features

* wire registerDebugOverrides through client common
([#1368](#1368))
([9011c2a](9011c2a))
</details>

<details><summary>react-native-client-sdk: 10.17.5</summary>

##
[10.17.5](react-native-client-sdk-v10.17.4...react-native-client-sdk-v10.17.5)
(2026-05-19)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-client-sdk-common bumped from 1.26.3 to 1.27.0
</details>

<details><summary>react-sdk: 4.0.2</summary>

##
[4.0.2](react-sdk-v4.0.1...react-sdk-v4.0.2)
(2026-05-19)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-client-sdk bumped from ^4.6.5 to ^4.7.0
</details>

<details><summary>server-sdk-ai: 1.0.0</summary>

##
[1.0.0](server-sdk-ai-v0.20.0...server-sdk-ai-v1.0.0)
(2026-05-19)


### ⚠ BREAKING CHANGES

* Remove bedrock-specific tracker method
([#1385](#1385))
* Remove `LDAIClient.agent` — use `LDAIClient.agentConfig` instead
* Remove `LDAIClient.agents` — use `LDAIClient.agentConfigs` instead
* Remove `LDAIClient.createChat` — use `LDAIClient.createModel` instead
* Remove `LDAIClient.initChat` — use `LDAIClient.createModel` instead
* Remove `ChatResponse` type and the `api/chat` module — use
`RunnerResult` from `api/model` instead
* Change `Judge.evaluateMessages` parameter type from `ChatResponse` to
`RunnerResult` (method retained per AI SDK spec Requirement 1.1.3)
* Remove `evaluationMetricKeys` (plural) field from `LDAIJudgeConfig`
and `LDAIJudgeConfigDefault` — use `evaluationMetricKey` (singular)
instead
* Remove `LDAIConfigTracker.trackOpenAIMetrics` — use
`tracker.trackMetricsOf(getAIMetricsFromResponse, fn)` from
`@launchdarkly/server-sdk-ai-openai` instead
* Remove `LDAIConfigTracker.trackVercelAISDKGenerateTextMetrics` — use
`tracker.trackMetricsOf(getAIMetricsFromResponse, fn)` from
`@launchdarkly/server-sdk-ai-vercel` instead
* Remove `createOpenAiUsage` helper — use `getAIMetricsFromResponse`
from `@launchdarkly/server-sdk-ai-openai` instead
* Remove `createVercelAISDKTokenUsage` helper — use
`getAIMetricsFromResponse` from `@launchdarkly/server-sdk-ai-vercel`
instead
* Remove `LDAIClient.config` — use `LDAIClient.completionConfig` instead

### Features

* Change `Judge.evaluateMessages` parameter type from `ChatResponse` to
`RunnerResult` (method retained per AI SDK spec Requirement 1.1.3)
([86951b0](86951b0))
* Remove `ChatResponse` type and the `api/chat` module — use
`RunnerResult` from `api/model` instead
([86951b0](86951b0))
* Remove `createOpenAiUsage` helper — use `getAIMetricsFromResponse`
from `@launchdarkly/server-sdk-ai-openai` instead
([86951b0](86951b0))
* Remove `createVercelAISDKTokenUsage` helper — use
`getAIMetricsFromResponse` from `@launchdarkly/server-sdk-ai-vercel`
instead
([86951b0](86951b0))
* Remove `evaluationMetricKeys` (plural) field from `LDAIJudgeConfig`
and `LDAIJudgeConfigDefault` — use `evaluationMetricKey` (singular)
instead
([86951b0](86951b0))
* Remove `LDAIClient.agent` — use `LDAIClient.agentConfig` instead
([86951b0](86951b0))
* Remove `LDAIClient.agents` — use `LDAIClient.agentConfigs` instead
([86951b0](86951b0))
* Remove `LDAIClient.config` — use `LDAIClient.completionConfig` instead
([86951b0](86951b0))
* Remove `LDAIClient.createChat` — use `LDAIClient.createModel` instead
([86951b0](86951b0))
* Remove `LDAIClient.initChat` — use `LDAIClient.createModel` instead
([86951b0](86951b0))
* Remove `LDAIConfigTracker.trackOpenAIMetrics` — use
`tracker.trackMetricsOf(getAIMetricsFromResponse, fn)` from
`@launchdarkly/server-sdk-ai-openai` instead
([86951b0](86951b0))
* Remove `LDAIConfigTracker.trackVercelAISDKGenerateTextMetrics` — use
`tracker.trackMetricsOf(getAIMetricsFromResponse, fn)` from
`@launchdarkly/server-sdk-ai-vercel` instead
([86951b0](86951b0))
* Remove bedrock-specific tracker method
([#1385](#1385))
([f7dbee8](f7dbee8))


### Bug Fixes

* Make judge runners non-multi-turn
([#1383](#1383))
([3d8f488](3d8f488))
* Move ManagedAgentGraph alongside other managed types
([#1384](#1384))
([22dd76d](22dd76d))
</details>

<details><summary>server-sdk-ai-langchain: 0.8.0</summary>

##
[0.8.0](server-sdk-ai-langchain-v0.7.0...server-sdk-ai-langchain-v0.8.0)
(2026-05-19)


### Features

* Support conversation history directly in AI Provider model runners
([#1371](#1371))
([b246631](b246631))


### Bug Fixes

* Make judge runners non-multi-turn
([#1383](#1383))
([3d8f488](3d8f488))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.0
  * peerDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.0
</details>

<details><summary>server-sdk-ai-openai: 0.7.0</summary>

##
[0.7.0](server-sdk-ai-openai-v0.6.0...server-sdk-ai-openai-v0.7.0)
(2026-05-19)


### Features

* Support conversation history directly in AI Provider model runners
([#1371](#1371))
([b246631](b246631))


### Bug Fixes

* Make judge runners non-multi-turn
([#1383](#1383))
([3d8f488](3d8f488))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.0
  * peerDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.0
</details>

<details><summary>server-sdk-ai-vercel: 0.7.0</summary>

##
[0.7.0](server-sdk-ai-vercel-v0.6.0...server-sdk-ai-vercel-v0.7.0)
(2026-05-19)


### Features

* Support conversation history directly in AI Provider model runners
([#1371](#1371))
([b246631](b246631))


### Bug Fixes

* Make judge runners non-multi-turn
([#1383](#1383))
([3d8f488](3d8f488))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.0
  * peerDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.20.0 to ^1.0.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]
> **Medium Risk**
> Primarily a release/metadata PR (version bumps and changelog updates),
but it includes a `@launchdarkly/server-sdk-ai` major version bump to
`1.0.0`, which signals breaking API changes for downstream consumers.
> 
> **Overview**
> **Release-please version rollup.** Updates
`.release-please-manifest.json`, package `version` fields, and
associated `CHANGELOG.md` entries across the monorepo.
> 
> Notable bumps include `@launchdarkly/server-sdk-ai` to **`1.0.0`**
(breaking-change release per changelog) and propagation of dependency
bumps (`@launchdarkly/js-client-sdk-common` to `1.27.0`, browser SDK to
`4.7.0`, React Native to `10.17.5`, React SDK to `4.0.2`, and AI
provider packages to `0.7.x/0.8.0`), along with updating embedded
SDK/wrapper version strings (e.g., `BrowserInfo`, `PlatformInfo`,
`LDReactClient`).
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
bebd031. 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