Skip to content

chore(main): release LaunchDarkly.ServerSdk.Ai 0.10.0#278

Merged
jsonbailey merged 1 commit into
mainfrom
release-please--branches--main--components--LaunchDarkly.ServerSdk.Ai
Jun 5, 2026
Merged

chore(main): release LaunchDarkly.ServerSdk.Ai 0.10.0#278
jsonbailey merged 1 commit into
mainfrom
release-please--branches--main--components--LaunchDarkly.ServerSdk.Ai

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

🤖 I have created a release beep boop

0.10.0 (2026-06-05)

⚠ BREAKING CHANGES

  • Move Role from LaunchDarkly.Sdk.Server.Ai.DataModel into LdAiConfigTypes
  • Rename LdAiConfig.ModelConfiguration to LdAiConfigTypes.ModelConfig and LdAiConfig.ModelProvider to LdAiConfigTypes.ProviderConfig
  • Move shared types nested in LdAiConfig into static LdAiConfigTypes — Message, ModelConfiguration, and ModelProvider
  • Enforce at-most-once tracking — each metric type (duration, tokens, feedback, success/error, time-to-first-token) records once per tracker; duplicates are dropped with a warning
  • Add ResumptionToken on ILdAiConfigTracker and ILdAiClient.CreateTracker(resumptionToken, context) for cross-process tracker reconstruction with the original runId
  • Add per-execution runId on all AI track event payloads for billing isolation
  • Change CompletionConfig to return LdAiCompletionConfig instead of ILdAiConfigTracker — obtain a tracker via config.CreateTracker()
  • Default LdAiCompletionConfigDefault.Enabled to true per AISDK spec (was false on the LdAiConfig builder in 0.9.x)
  • Remove ILdAiConfigTracker.Config property — read config fields from the LdAiCompletionConfig the caller already holds
  • Make LdAiConfigTracker SDK-constructed only — the public constructor is removed; obtain trackers via config.CreateTracker() or ILdAiClient.CreateTracker(resumptionToken, context)
  • Convert LdAiCompletionConfig and LdAiCompletionConfigDefault from records to classes — equality is reference-based instead of structural
  • Remove LaunchDarkly.Sdk.Server.Ai.DataModel namespace — delete unused AiConfig, Meta, Model, Provider, and Message JSON DTO classes
  • Split unified LdAiConfig into LdAiCompletionConfig (SDK output) and LdAiCompletionConfigDefault (user input) — Builder, New(), and Disabled move to the Default type; introduce abstract LdAiConfig and LdAiConfigDefault base types for future agent/judge modes

Features

  • Add MetricSummary property on ILdAiConfigTracker summarizing recorded metrics (44ff485)
  • Add per-execution runId on all AI track event payloads for billing isolation (44ff485)
  • Add ResumptionToken on ILdAiConfigTracker and ILdAiClient.CreateTracker(resumptionToken, context) for cross-process tracker reconstruction with the original runId (44ff485)
  • Change CompletionConfig to return LdAiCompletionConfig instead of ILdAiConfigTracker — obtain a tracker via config.CreateTracker() (92f799f)
  • Convert LdAiCompletionConfig and LdAiCompletionConfigDefault from records to classes — equality is reference-based instead of structural (92f799f)
  • Default LdAiCompletionConfigDefault.Enabled to true per AISDK spec (was false on the LdAiConfig builder in 0.9.x) (92f799f)
  • Enforce at-most-once tracking — each metric type (duration, tokens, feedback, success/error, time-to-first-token) records once per tracker; duplicates are dropped with a warning (44ff485)
  • Make LdAiConfigTracker SDK-constructed only — the public constructor is removed; obtain trackers via config.CreateTracker() or ILdAiClient.CreateTracker(resumptionToken, context) (92f799f)
  • Mode-mismatch detection — log a warning and return the caller's default when the flag's _ldMeta.mode does not match the requested mode (per sdk-specs#229) (92f799f)
  • Move Role from LaunchDarkly.Sdk.Server.Ai.DataModel into LdAiConfigTypes (ac7fd06)
  • Move shared types nested in LdAiConfig into static LdAiConfigTypes — Message, ModelConfiguration, and ModelProvider (ac7fd06)
  • Non-object variation handling — log an error and return the caller's default when the variation result is not an object (92f799f)
  • Per-message interpolation fallback — a malformed Mustache template keeps raw content for that message rather than discarding the entire config (92f799f)
  • Remove ILdAiConfigTracker.Config property — read config fields from the LdAiCompletionConfig the caller already holds (92f799f)
  • Remove LaunchDarkly.Sdk.Server.Ai.DataModel namespace — delete unused AiConfig, Meta, Model, Provider, and Message JSON DTO classes (92f799f)
  • Rename LdAiConfig.ModelConfiguration to LdAiConfigTypes.ModelConfig and LdAiConfig.ModelProvider to LdAiConfigTypes.ProviderConfig (ac7fd06)
  • Split unified LdAiConfig into LdAiCompletionConfig (SDK output) and LdAiCompletionConfigDefault (user input) — Builder, New(), and Disabled move to the Default type; introduce abstract LdAiConfig and LdAiConfigDefault base types for future agent/judge modes (92f799f)
  • Tolerant LdValue parsing — missing or wrong-typed fields degrade to typed defaults instead of discarding the whole config (92f799f)

This PR was generated with Release Please. See documentation.


Note

High Risk
The tagged release ships extensive breaking public API and telemetry/billing semantics; this PR is low-risk mechanically but merging it publishes high consumer upgrade risk.

Overview
Release Please PR that publishes LaunchDarkly.ServerSdk.Ai 0.10.0 by bumping 0.9.40.10.0 in .release-please-manifest.json, LaunchDarkly.ServerSdk.Ai.csproj, SdkInfo.Version, and PROVENANCE.md, and adding the 0.10.0 section to CHANGELOG.md.

The changelog documents a breaking AI SDK realignment with the AISDK spec: split LdAiConfig into LdAiCompletionConfig (evaluation output) vs LdAiCompletionConfigDefault (caller input); CompletionConfig returns config, not a tracker (config.CreateTracker() / ILdAiClient.CreateTracker(resumptionToken, context)); tracker construction is SDK-only with runId, resumption tokens, at-most-once metrics, and MetricSummary; shared types move to LdAiConfigTypes and DataModel is removed; completion defaults default Enabled to true; config/records become classes (reference equality). Non-breaking behavior called out includes tolerant LdValue parsing, mode-mismatch and non-object variation fallbacks, and per-message Mustache fallback.

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

@github-actions github-actions Bot requested a review from a team as a code owner June 3, 2026 15:14
@github-actions github-actions Bot force-pushed the release-please--branches--main--components--LaunchDarkly.ServerSdk.Ai branch 3 times, most recently from 62c544d to e98a086 Compare June 5, 2026 17:51
@github-actions github-actions Bot force-pushed the release-please--branches--main--components--LaunchDarkly.ServerSdk.Ai branch from e98a086 to 82deb10 Compare June 5, 2026 17:56
@jsonbailey jsonbailey merged commit 81f8345 into main Jun 5, 2026
5 checks passed
@jsonbailey jsonbailey deleted the release-please--branches--main--components--LaunchDarkly.ServerSdk.Ai branch June 5, 2026 17:59
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Created releases:

🌻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant