Skip to content

feat: Add flag eval model for FDv2.#1124

Merged
kinyoklion merged 5 commits intomainfrom
rlamb/sdk-1916/flagEval-model
Feb 25, 2026
Merged

feat: Add flag eval model for FDv2.#1124
kinyoklion merged 5 commits intomainfrom
rlamb/sdk-1916/flagEval-model

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Feb 24, 2026

Note

Medium Risk
Broadens FDv2 ObjectKind to string, weakening compile-time guarantees and potentially allowing unexpected kinds to flow through; new mapping logic could affect flag state/version handling if integrated incorrectly.

Overview
Adds a new client-side FDv2 object kind, flagEval, to represent pre-evaluated flag results and map them into the SDK’s ItemDescriptor format for FlagManager consumption.

Updates the shared FDv2 protocol types so ObjectKind is no longer limited to 'flag' | 'segment' (now treated as an opaque string), enabling environment-specific kinds like flagEval. Adds comprehensive unit tests covering passthrough processing, put/delete mapping semantics (envelope version overrides), and protocol-handler integration/ignoring of unknown kinds.

Written by Cursor Bugbot for commit 1fb2aeb. This will update automatically on new commits. Configure here.

@github-actions
Copy link
Contributor

@launchdarkly/js-sdk-common size report
This is the brotli compressed size of the ESM build.
Compressed size: 25462 bytes
Compressed size limit: 26000
Uncompressed size: 124854 bytes

@github-actions
Copy link
Contributor

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

@github-actions
Copy link
Contributor

@launchdarkly/js-client-sdk size report
This is the brotli compressed size of the ESM build.
Compressed size: 23677 bytes
Compressed size limit: 25000
Uncompressed size: 82063 bytes

@github-actions
Copy link
Contributor

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

| unknown;
}

/**
Copy link
Member Author

Choose a reason for hiding this comment

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

I am making the kind here looser because this layer doesn't need to be aware of the kinds. The specific SDK type determines the kinds.

I considered making all the types and the protocol handler generic over a kind type, but I am not sure if merits the complexity for very little benefit.

I think that the only benefit would be that the ObjProcessors could be keyed by the kind, instead of by a string.

* tracked via `flagVersion`, and aggregate payload state is tracked via the
* payload selector.
*/
export type FlagEvaluationResult = Omit<Flag, 'version'> & {
Copy link
Member Author

Choose a reason for hiding this comment

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

Currently I think it is best to represent this type in terms of the existing type. But we may end up decoupling them if the flag type needs fundamentally changed.

@kinyoklion kinyoklion marked this pull request as ready for review February 24, 2026 23:29
@kinyoklion kinyoklion requested a review from a team as a code owner February 24, 2026 23:29
Copy link

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

@kinyoklion
Copy link
Member Author

kinyoklion commented Feb 24, 2026

For Java/Dotnet we did these as chores, because they didn't need to release. But here we need them to be feat to keep the cross package versions updated for cross package boundary changes.

@kinyoklion kinyoklion changed the title chore: Add flag eval model for FDv2. feat: Add flag eval model for FDv2. Feb 24, 2026
@kinyoklion kinyoklion requested a review from keelerm84 February 25, 2026 00:17
@kinyoklion kinyoklion merged commit 028e63f into main Feb 25, 2026
38 checks passed
@kinyoklion kinyoklion deleted the rlamb/sdk-1916/flagEval-model branch February 25, 2026 19:14
@github-actions github-actions bot mentioned this pull request Feb 25, 2026
jsonbailey pushed a commit that referenced this pull request Feb 25, 2026
🤖 I have created a release *beep* *boop*
---


<details><summary>akamai-edgeworker-sdk-common: 2.0.15</summary>

##
[2.0.15](akamai-edgeworker-sdk-common-v2.0.14...akamai-edgeworker-sdk-common-v2.0.15)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-server-sdk-common bumped from ^2.18.0 to ^2.18.1
</details>

<details><summary>akamai-server-base-sdk: 3.0.16</summary>

##
[3.0.16](akamai-server-base-sdk-v3.0.15...akamai-server-base-sdk-v3.0.16)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^2.0.14 to
^2.0.15
    * @launchdarkly/js-server-sdk-common bumped from ^2.18.0 to ^2.18.1
</details>

<details><summary>akamai-server-edgekv-sdk: 1.4.18</summary>

##
[1.4.18](akamai-server-edgekv-sdk-v1.4.17...akamai-server-edgekv-sdk-v1.4.18)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
* @launchdarkly/akamai-edgeworker-sdk-common bumped from ^2.0.14 to
^2.0.15
    * @launchdarkly/js-server-sdk-common bumped from ^2.18.0 to ^2.18.1
</details>

<details><summary>browser: 0.1.10</summary>

##
[0.1.10](browser-v0.1.9...browser-v0.1.10)
(2026-02-25)


### Dependencies

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

<details><summary>browser-telemetry: 1.0.26</summary>

##
[1.0.26](browser-telemetry-v1.0.25...browser-telemetry-v1.0.26)
(2026-02-25)


### Dependencies

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

<details><summary>cloudflare-server-sdk: 2.7.15</summary>

##
[2.7.15](cloudflare-server-sdk-v2.7.14...cloudflare-server-sdk-v2.7.15)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
* @launchdarkly/js-server-sdk-common-edge bumped from 2.6.13 to 2.6.14
</details>

<details><summary>fastly-server-sdk: 0.2.7</summary>

##
[0.2.7](fastly-server-sdk-v0.2.6...fastly-server-sdk-v0.2.7)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
</details>

<details><summary>jest: 1.0.5</summary>

##
[1.0.5](jest-v1.0.4...jest-v1.0.5)
(2026-02-25)


### Dependencies

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

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

##
[4.3.0](js-client-sdk-v4.2.1...js-client-sdk-v4.3.0)
(2026-02-25)


### Features

* Consolidate endpoint paths. Add FDv2 endpoints.
([#1125](#1125))
([297ef9d](297ef9d))


### Dependencies

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

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

##
[1.20.0](js-client-sdk-common-v1.19.1...js-client-sdk-common-v1.20.0)
(2026-02-25)


### Features

* Add flag eval model for FDv2.
([#1124](#1124))
([028e63f](028e63f))
* Consolidate endpoint paths. Add FDv2 endpoints.
([#1125](#1125))
([297ef9d](297ef9d))


### Dependencies

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

<details><summary>js-sdk-common: 2.22.0</summary>

##
[2.22.0](js-sdk-common-v2.21.0...js-sdk-common-v2.22.0)
(2026-02-25)


### Features

* Add flag eval model for FDv2.
([#1124](#1124))
([028e63f](028e63f))
</details>

<details><summary>js-server-sdk-common: 2.18.1</summary>

##
[2.18.1](js-server-sdk-common-v2.18.0...js-server-sdk-common-v2.18.1)
(2026-02-25)


### Dependencies

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

<details><summary>js-server-sdk-common-edge: 2.6.14</summary>

##
[2.6.14](js-server-sdk-common-edge-v2.6.13...js-server-sdk-common-edge-v2.6.14)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
</details>

<details><summary>node-server-sdk: 9.10.8</summary>

##
[9.10.8](node-server-sdk-v9.10.7...node-server-sdk-v9.10.8)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
</details>

<details><summary>node-server-sdk-dynamodb: 6.2.20</summary>

##
[6.2.20](node-server-sdk-dynamodb-v6.2.19...node-server-sdk-dynamodb-v6.2.20)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/node-server-sdk bumped from 9.10.7 to 9.10.8
  * peerDependencies
    * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.10.8
</details>

<details><summary>node-server-sdk-otel: 1.3.8</summary>

##
[1.3.8](node-server-sdk-otel-v1.3.7...node-server-sdk-otel-v1.3.8)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/node-server-sdk bumped from 9.10.7 to 9.10.8
  * peerDependencies
    * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.10.8
</details>

<details><summary>node-server-sdk-redis: 4.2.20</summary>

##
[4.2.20](node-server-sdk-redis-v4.2.19...node-server-sdk-redis-v4.2.20)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/node-server-sdk bumped from 9.10.7 to 9.10.8
  * peerDependencies
    * @launchdarkly/node-server-sdk bumped from >=9.4.3 to >=9.10.8
</details>

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

##
[10.14.0](react-native-client-sdk-v10.13.1...react-native-client-sdk-v10.14.0)
(2026-02-25)


### Features

* Consolidate endpoint paths. Add FDv2 endpoints.
([#1125](#1125))
([297ef9d](297ef9d))


### Dependencies

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

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

##
[0.16.4](server-sdk-ai-v0.16.3...server-sdk-ai-v0.16.4)
(2026-02-25)


### Bug Fixes

* Improve usage reporting
([#1108](#1108))
([7a003b7](7a003b7))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
  * peerDependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.x to 2.18.1
</details>

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

##
[0.5.0](server-sdk-ai-langchain-v0.4.6...server-sdk-ai-langchain-v0.5.0)
(2026-02-25)


### ⚠ BREAKING CHANGES

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))

### Features

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))
([1ca3ce7](1ca3ce7))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.16.3 to ^0.16.4
  * peerDependencies
* @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.4
</details>

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

##
[0.5.0](server-sdk-ai-openai-v0.4.6...server-sdk-ai-openai-v0.5.0)
(2026-02-25)


### ⚠ BREAKING CHANGES

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))

### Features

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))
([1ca3ce7](1ca3ce7))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
    * @launchdarkly/server-sdk-ai bumped from ^0.16.3 to ^0.16.4
  * peerDependencies
* @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.4
</details>

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

##
[0.5.0](server-sdk-ai-vercel-v0.4.6...server-sdk-ai-vercel-v0.5.0)
(2026-02-25)


### ⚠ BREAKING CHANGES

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))

### Features

* Add optional OTEL LLM instrumentation to provider packages
([#1122](#1122))
([1ca3ce7](1ca3ce7))


### Dependencies

* The following workspace dependencies were updated
  * devDependencies
    * @launchdarkly/server-sdk-ai bumped from ^0.16.3 to ^0.16.4
  * peerDependencies
* @launchdarkly/server-sdk-ai bumped from ^0.15.0 || ^0.16.0 to ^0.16.4
</details>

<details><summary>shopify-oxygen-sdk: 0.1.5</summary>

##
[0.1.5](shopify-oxygen-sdk-v0.1.4...shopify-oxygen-sdk-v0.1.5)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
    * @launchdarkly/js-server-sdk-common bumped from 2.18.0 to 2.18.1
</details>

<details><summary>vercel-server-sdk: 1.3.40</summary>

##
[1.3.40](vercel-server-sdk-v1.3.39...vercel-server-sdk-v1.3.40)
(2026-02-25)


### Dependencies

* The following workspace dependencies were updated
  * dependencies
* @launchdarkly/js-server-sdk-common-edge bumped from 2.6.13 to 2.6.14
</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**
> Mostly automated version/dependency updates, but it includes a
breaking 0.5.0 release for AI providers and client SDK endpoint/protocol
changes (FDv2) that could impact compatibility at runtime.
> 
> **Overview**
> **Release-please version bump across the monorepo.** Updates
`.release-please-manifest.json`, package versions, and changelogs for
many SDKs and supporting packages.
> 
> Notable functional deltas called out in changelogs include: **optional
OpenTelemetry LLM instrumentation** in the `server-sdk-ai-*` provider
packages (marked *breaking* with a 0.5.0 release), **FDv2 support work**
(new flag eval model and consolidated/expanded FDv2 endpoints) in
`js-sdk-common`/`js-client-sdk-common` and propagated to the browser and
React Native SDKs, plus a `server-sdk-ai` usage-reporting fix. The
remaining changes are dependency bumps and synchronized `sdkVersion`
constants used in platform/user-agent metadata.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
9a8ca3c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=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