releases.shpreview

Config API reorganized; metric tracking now at-most-once

LaunchDarkly.ServerSdk.Ai-v0.10.0

14 features3 fixesThis release14 featuresNew capabilities3 fixesBug fixesAI-tallied from the release notes

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.

<!-- CURSOR_SUMMARY -->

Fetched June 5, 2026