feat: wire registerDebugOverrides through client common#1368
Conversation
|
@cursor review |
|
@launchdarkly/js-sdk-common size report |
|
@launchdarkly/js-client-sdk size report |
|
@launchdarkly/js-client-sdk-common size report |
|
@launchdarkly/browser size report |
There was a problem hiding this comment.
✅ 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.
| import { Hook, type LDOptions } from '../api'; | ||
| import { LDContext } from '../api/LDContext'; | ||
| import { LDInspection } from '../api/LDInspection'; | ||
| import type { LDDebugOverride } from '../flag-manager/FlagManager'; |
There was a problem hiding this comment.
We should probably move this type to api/ if we can.
🤖 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>
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 (
LDClientImplconstructor) 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.registerDebugOverridescallback and invokes it duringLDClientImplconstruction whenFlagManager.getDebugOverride()is available, enabling plugins to receive debug override controls as part of client initialization.Updates Browser and Electron clients to pass
registerDebugOverridesthat callssafeRegisterDebugOverridePlugins, and removes the prior Browser-side post-plugin-registration debug override wiring.Extracts
LDDebugOverrideinto a dedicated API type (api/LDDebugOverride) and updates imports/exports accordingly, with new unit tests coveringsafeRegisterDebugOverridePluginsbehavior (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.