|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## [0.10.0](https://github.com/launchdarkly/dotnet-core/compare/LaunchDarkly.ServerSdk.Ai-v0.9.4...LaunchDarkly.ServerSdk.Ai-v0.10.0) (2026-06-05) |
| 4 | + |
| 5 | + |
| 6 | +### ⚠ BREAKING CHANGES |
| 7 | + |
| 8 | +* Move Role from LaunchDarkly.Sdk.Server.Ai.DataModel into LdAiConfigTypes |
| 9 | +* Rename LdAiConfig.ModelConfiguration to LdAiConfigTypes.ModelConfig and LdAiConfig.ModelProvider to LdAiConfigTypes.ProviderConfig |
| 10 | +* Move shared types nested in LdAiConfig into static LdAiConfigTypes — Message, ModelConfiguration, and ModelProvider |
| 11 | +* 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 |
| 12 | +* Add ResumptionToken on ILdAiConfigTracker and ILdAiClient.CreateTracker(resumptionToken, context) for cross-process tracker reconstruction with the original runId |
| 13 | +* Add per-execution runId on all AI track event payloads for billing isolation |
| 14 | +* Change CompletionConfig to return LdAiCompletionConfig instead of ILdAiConfigTracker — obtain a tracker via config.CreateTracker() |
| 15 | +* Default LdAiCompletionConfigDefault.Enabled to true per AISDK spec (was false on the LdAiConfig builder in 0.9.x) |
| 16 | +* Remove ILdAiConfigTracker.Config property — read config fields from the LdAiCompletionConfig the caller already holds |
| 17 | +* Make LdAiConfigTracker SDK-constructed only — the public constructor is removed; obtain trackers via config.CreateTracker() or ILdAiClient.CreateTracker(resumptionToken, context) |
| 18 | +* Convert LdAiCompletionConfig and LdAiCompletionConfigDefault from records to classes — equality is reference-based instead of structural |
| 19 | +* Remove LaunchDarkly.Sdk.Server.Ai.DataModel namespace — delete unused AiConfig, Meta, Model, Provider, and Message JSON DTO classes |
| 20 | +* 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 |
| 21 | + |
| 22 | +### Features |
| 23 | + |
| 24 | +* Add MetricSummary property on ILdAiConfigTracker summarizing recorded metrics ([44ff485](https://github.com/launchdarkly/dotnet-core/commit/44ff485fcc3095b3adea81d142bc865cd0904d12)) |
| 25 | +* Add per-execution runId on all AI track event payloads for billing isolation ([44ff485](https://github.com/launchdarkly/dotnet-core/commit/44ff485fcc3095b3adea81d142bc865cd0904d12)) |
| 26 | +* Add ResumptionToken on ILdAiConfigTracker and ILdAiClient.CreateTracker(resumptionToken, context) for cross-process tracker reconstruction with the original runId ([44ff485](https://github.com/launchdarkly/dotnet-core/commit/44ff485fcc3095b3adea81d142bc865cd0904d12)) |
| 27 | +* Change CompletionConfig to return LdAiCompletionConfig instead of ILdAiConfigTracker — obtain a tracker via config.CreateTracker() ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 28 | +* Convert LdAiCompletionConfig and LdAiCompletionConfigDefault from records to classes — equality is reference-based instead of structural ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 29 | +* Default LdAiCompletionConfigDefault.Enabled to true per AISDK spec (was false on the LdAiConfig builder in 0.9.x) ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 30 | +* 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](https://github.com/launchdarkly/dotnet-core/commit/44ff485fcc3095b3adea81d142bc865cd0904d12)) |
| 31 | +* Make LdAiConfigTracker SDK-constructed only — the public constructor is removed; obtain trackers via config.CreateTracker() or ILdAiClient.CreateTracker(resumptionToken, context) ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 32 | +* 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](https://github.com/launchdarkly/dotnet-core/issues/229)) ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 33 | +* Move Role from LaunchDarkly.Sdk.Server.Ai.DataModel into LdAiConfigTypes ([ac7fd06](https://github.com/launchdarkly/dotnet-core/commit/ac7fd06ffa078b701f19b2eb16982103207633ff)) |
| 34 | +* Move shared types nested in LdAiConfig into static LdAiConfigTypes — Message, ModelConfiguration, and ModelProvider ([ac7fd06](https://github.com/launchdarkly/dotnet-core/commit/ac7fd06ffa078b701f19b2eb16982103207633ff)) |
| 35 | +* Non-object variation handling — log an error and return the caller's default when the variation result is not an object ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 36 | +* Per-message interpolation fallback — a malformed Mustache template keeps raw content for that message rather than discarding the entire config ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 37 | +* Remove ILdAiConfigTracker.Config property — read config fields from the LdAiCompletionConfig the caller already holds ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 38 | +* Remove LaunchDarkly.Sdk.Server.Ai.DataModel namespace — delete unused AiConfig, Meta, Model, Provider, and Message JSON DTO classes ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 39 | +* Rename LdAiConfig.ModelConfiguration to LdAiConfigTypes.ModelConfig and LdAiConfig.ModelProvider to LdAiConfigTypes.ProviderConfig ([ac7fd06](https://github.com/launchdarkly/dotnet-core/commit/ac7fd06ffa078b701f19b2eb16982103207633ff)) |
| 40 | +* 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](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 41 | +* Tolerant LdValue parsing — missing or wrong-typed fields degrade to typed defaults instead of discarding the whole config ([92f799f](https://github.com/launchdarkly/dotnet-core/commit/92f799f6681772eb1b34dd808517ce98845f70c6)) |
| 42 | + |
3 | 43 | ## [0.9.4](https://github.com/launchdarkly/dotnet-core/compare/LaunchDarkly.ServerSdk.Ai-v0.9.3...LaunchDarkly.ServerSdk.Ai-v0.9.4) (2026-05-27) |
4 | 44 |
|
5 | 45 |
|
|
0 commit comments