launchdarkly-server-sdk-ai 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4828d6db587bacb6185c5cd2d02840d6cd0529cc00ffc959f42cba096ea8a672
4
- data.tar.gz: d88837be2fdc48085ab604d4e13d5f146b46a05d5ae3de7c8cd73435c7ab9f3a
3
+ metadata.gz: 841cd2b74f8a6e89125e283d2c75442ccb58d64373f04439f882b9d968803818
4
+ data.tar.gz: 85a82738b8c931e8a9dc466a9cc66ec077e20a2e58fb112e01cd286b1bf551df
5
5
  SHA512:
6
- metadata.gz: d0dc49a04fb2cd56e039fb9d091ce4d61c4438dbdcc307e176d997740b15e5fe4a14699b04dd3e68399b89b09aa07a30c413ecde749432cb27a45157cf3bc663
7
- data.tar.gz: a97a9126fa820435e661c421959560d4dc8107b9f164d42014f4ee4862460295aad5178e9782bf900787374e1c9d9ffb0e26efc3523e2c38969c0a004eda13a4
6
+ metadata.gz: 1fb7745e91ce1fb85b965c72f033d3c6ea8978f47d30aa691502251bba83238fbe279d5b67cc3a4e00b8669f3509bf61591bba7fa865f3147db2afc9cb5d3361
7
+ data.tar.gz: dde93cdaac0a5cf24e6c684d9b1769f9c5e6092e1140bf6f8125e6bc8a2eb0c485cc67f460b195366473f8ca2cda6ba41618d57e2c8e08e73798613c590901fa
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.0](https://github.com/launchdarkly/ruby-server-sdk-ai/compare/0.2.2...0.3.0) (2026-03-05)
4
+
5
+
6
+ ### ⚠ BREAKING CHANGES
7
+
8
+ * Use kwargs for completion_config and config methods
9
+ * Return disabled config if no defaultValue is provided ([#23](https://github.com/launchdarkly/ruby-server-sdk-ai/issues/23))
10
+
11
+ ### Features
12
+
13
+ * Drop support for Ruby 3.0 which is EOL. ([fe3fdf8](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/fe3fdf8c022dd4e53e43e9311d76e3b5a098af75))
14
+ * Use kwargs for completion_config and config methods ([fe3fdf8](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/fe3fdf8c022dd4e53e43e9311d76e3b5a098af75))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * Return disabled config if no defaultValue is provided ([#23](https://github.com/launchdarkly/ruby-server-sdk-ai/issues/23)) ([fe3fdf8](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/fe3fdf8c022dd4e53e43e9311d76e3b5a098af75))
20
+
21
+ ## [0.2.2](https://github.com/launchdarkly/ruby-server-sdk-ai/compare/0.2.1...0.2.2) (2026-02-25)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * Deprecated config method, use completion_config ([#18](https://github.com/launchdarkly/ruby-server-sdk-ai/issues/18)) ([9f7ec17](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/9f7ec178a87e0f1139c4445d4236cb5db296b0fa))
27
+ * Improve usage reporting ([#18](https://github.com/launchdarkly/ruby-server-sdk-ai/issues/18)) ([9f7ec17](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/9f7ec178a87e0f1139c4445d4236cb5db296b0fa))
28
+ * Remove bundler version constraint from gemspec ([#20](https://github.com/launchdarkly/ruby-server-sdk-ai/issues/20)) ([ef18f32](https://github.com/launchdarkly/ruby-server-sdk-ai/commit/ef18f323d604b3b4d3ca8f913b66316def34042b))
29
+
3
30
  ## [0.2.1](https://github.com/launchdarkly/ruby-server-sdk-ai/compare/0.2.0...0.2.1) (2025-08-28)
4
31
 
5
32
 
data/PROVENANCE.md CHANGED
@@ -9,7 +9,7 @@ To verify SLSA provenance attestations, we recommend using [slsa-verifier](https
9
9
  <!-- x-release-please-start-version -->
10
10
  ```
11
11
  # Set the version of the SDK to verify
12
- VERSION=0.2.1
12
+ VERSION=0.3.0
13
13
  ```
14
14
  <!-- x-release-please-end -->
15
15
 
data/README.md CHANGED
@@ -7,6 +7,17 @@ LaunchDarkly Server SDK AI library for Ruby
7
7
  [![RubyDoc](https://img.shields.io/static/v1?label=docs+-+all+versions&message=reference&color=00add8)](https://www.rubydoc.info/gems/launchdarkly-server-sdk-ai)
8
8
  [![GitHub Pages](https://img.shields.io/static/v1?label=docs+-+latest&message=reference&color=00add8)](https://launchdarkly.github.io/ruby-server-sdk-ai)
9
9
 
10
+ > [!CAUTION]
11
+ > This AI SDK is in pre-release and not subject to backwards compatibility guarantees. The API may change based on feedback.
12
+ >
13
+ > Pin to a specific minor version and review the [changelog] before upgrading.
14
+ >
15
+ > Active feature development is ongoing in the [Python][python-ai-sdk] and [Node.js][node-ai-sdk] AI SDKs, so this SDK will receive new features at a slower pace. Refer to those for the latest capabilities.
16
+
17
+ [changelog]: https://github.com/launchdarkly/ruby-server-sdk-ai/blob/main/CHANGELOG.md
18
+ [python-ai-sdk]: https://github.com/launchdarkly/python-server-sdk-ai/tree/main/packages/sdk/server-ai
19
+ [node-ai-sdk]: https://github.com/launchdarkly/js-core/tree/main/packages/sdk/server-ai
20
+
10
21
  LaunchDarkly overview
11
22
  -------------------------
12
23
  [LaunchDarkly](https://www.launchdarkly.com) is a feature management platform that serves trillions of feature flags daily to help teams build better software, faster. [Get started](https://docs.launchdarkly.com/home/getting-started) using LaunchDarkly today!
@@ -16,7 +27,7 @@ LaunchDarkly overview
16
27
  Supported Ruby versions
17
28
  -----------------------
18
29
 
19
- This version of the library has a minimum Ruby version of 3.0.0, or 9.4.0 for JRuby.
30
+ This version of the library has a minimum Ruby version of 3.1.0, or 9.4.0 for JRuby.
20
31
 
21
32
  Getting started
22
33
  -----------
@@ -4,6 +4,7 @@ require 'logger'
4
4
  require 'mustache'
5
5
 
6
6
  require 'server/ai/version'
7
+ require 'server/ai/sdk_info'
7
8
  require 'server/ai/client'
8
9
  require 'server/ai/ai_config_tracker'
9
10
 
@@ -3,6 +3,7 @@
3
3
  require 'ldclient-rb'
4
4
  require 'mustache'
5
5
  require_relative 'ai_config_tracker'
6
+ require_relative 'sdk_info'
6
7
 
7
8
  module LaunchDarkly
8
9
  #
@@ -112,6 +113,15 @@ module LaunchDarkly
112
113
  @provider = provider
113
114
  end
114
115
 
116
+ #
117
+ # Returns a new disabled AIConfig instance.
118
+ #
119
+ # @return [AIConfig] a new disabled config
120
+ #
121
+ def self.disabled
122
+ new(enabled: false)
123
+ end
124
+
115
125
  def to_h
116
126
  {
117
127
  _ldMeta: {
@@ -127,6 +137,15 @@ module LaunchDarkly
127
137
  #
128
138
  # The Client class is the main entry point for the LaunchDarkly AI SDK.
129
139
  #
140
+ TRACK_SDK_INFO = '$ld:ai:sdk:info'
141
+ TRACK_USAGE_COMPLETION_CONFIG = '$ld:ai:usage:completion-config'
142
+
143
+ INIT_TRACK_CONTEXT = LaunchDarkly::LDContext.create({
144
+ kind: 'ld_ai',
145
+ key: 'ld-internal-tracking',
146
+ anonymous: true,
147
+ })
148
+
130
149
  class Client
131
150
  attr_reader :logger, :ld_client
132
151
 
@@ -135,30 +154,52 @@ module LaunchDarkly
135
154
 
136
155
  @ld_client = ld_client
137
156
  @logger = LaunchDarkly::Server::AI.default_logger
157
+
158
+ @ld_client.track(
159
+ TRACK_SDK_INFO,
160
+ INIT_TRACK_CONTEXT,
161
+ {
162
+ aiSdkName: LaunchDarkly::Server::AI::SDK_NAME,
163
+ aiSdkVersion: LaunchDarkly::Server::AI::VERSION,
164
+ aiSdkLanguage: LaunchDarkly::Server::AI::SDK_LANGUAGE,
165
+ },
166
+ 1
167
+ )
138
168
  end
139
169
 
140
170
  #
141
171
  # Retrieves the AIConfig
142
172
  #
143
- # @param config_key [String] The key of the configuration flag
173
+ # @param key [String] The key of the configuration flag
144
174
  # @param context [LDContext] The context used when evaluating the flag
145
- # @param default_value [AIConfig] The default value to use if the flag is not found
175
+ # @param default [AIConfig] The default value to use if the flag is not found
146
176
  # @param variables [Hash] Optional variables for rendering messages
147
177
  # @return [AIConfig] An AIConfig instance containing the configuration data
148
178
  #
149
- def config(config_key, context, default_value = nil, variables = nil)
150
- @ld_client.track('$ld:ai:config:function:single', context, config_key, 1)
179
+ def completion_config(key:, context:, default: nil, variables: nil)
180
+ @ld_client.track(TRACK_USAGE_COMPLETION_CONFIG, context, key, 1)
181
+
182
+ _completion_config(key:, context:, default: default || AIConfig.disabled, variables:)
183
+ end
184
+
185
+ # @deprecated Use {#completion_config} instead.
186
+ def config(key:, context:, default: nil, variables: nil)
187
+ warn '[DEPRECATION] `config` is deprecated. Use `completion_config` instead.'
188
+ completion_config(key:, context:, default:, variables:)
189
+ end
190
+
191
+ private
151
192
 
193
+ def _completion_config(key:, context:, default:, variables: nil)
152
194
  variation = @ld_client.variation(
153
- config_key,
195
+ key,
154
196
  context,
155
- default_value.respond_to?(:to_h) ? default_value.to_h : nil
197
+ default.respond_to?(:to_h) ? default.to_h : nil
156
198
  )
157
199
 
158
200
  all_variables = variables ? variables.dup : {}
159
201
  all_variables[:ldctx] = context.to_h
160
202
 
161
- # Process messages and provider configuration
162
203
  messages = nil
163
204
  if variation[:messages].is_a?(Array) && variation[:messages].all? { |msg| msg.is_a?(Hash) }
164
205
  messages = variation[:messages].map do |message|
@@ -188,18 +229,18 @@ module LaunchDarkly
188
229
  tracker = LaunchDarkly::Server::AI::AIConfigTracker.new(
189
230
  ld_client: @ld_client,
190
231
  variation_key: variation.dig(:_ldMeta, :variationKey) || '',
191
- config_key: config_key,
232
+ config_key: key,
192
233
  version: variation.dig(:_ldMeta, :version) || 1,
193
234
  model_name: model&.name || '',
194
235
  provider_name: provider_config&.name || '',
195
- context: context
236
+ context:
196
237
  )
197
238
 
198
239
  AIConfig.new(
199
240
  enabled: variation.dig(:_ldMeta, :enabled) || false,
200
- messages: messages,
201
- tracker: tracker,
202
- model: model,
241
+ messages:,
242
+ tracker:,
243
+ model:,
203
244
  provider: provider_config
204
245
  )
205
246
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LaunchDarkly
4
+ module Server
5
+ module AI
6
+ SDK_NAME = 'launchdarkly-server-sdk-ai'
7
+ SDK_LANGUAGE = 'ruby'
8
+ end
9
+ end
10
+ end
@@ -3,7 +3,7 @@
3
3
  module LaunchDarkly
4
4
  module Server
5
5
  module AI
6
- VERSION = '0.2.1' # x-release-please-version
6
+ VERSION = '0.3.0' # x-release-please-version
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: launchdarkly-server-sdk-ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - LaunchDarkly
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-03-05 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: launchdarkly-server-sdk
@@ -51,20 +52,6 @@ dependencies:
51
52
  - - "~>"
52
53
  - !ruby/object:Gem::Version
53
54
  version: '1.1'
54
- - !ruby/object:Gem::Dependency
55
- name: bundler
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '2.0'
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '2.0'
68
55
  - !ruby/object:Gem::Dependency
69
56
  name: rake
70
57
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +155,7 @@ files:
168
155
  - lib/launchdarkly-server-sdk-ai.rb
169
156
  - lib/server/ai/ai_config_tracker.rb
170
157
  - lib/server/ai/client.rb
158
+ - lib/server/ai/sdk_info.rb
171
159
  - lib/server/ai/version.rb
172
160
  homepage: https://github.com/launchdarkly/ruby-server-sdk-ai
173
161
  licenses:
@@ -175,6 +163,7 @@ licenses:
175
163
  metadata:
176
164
  source_code_uri: https://github.com/launchdarkly/ruby-server-sdk-ai
177
165
  changelog_uri: https://github.com/launchdarkly/ruby-server-sdk-ai/blob/main/CHANGELOG.md
166
+ post_install_message:
178
167
  rdoc_options: []
179
168
  require_paths:
180
169
  - lib
@@ -182,14 +171,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
171
  requirements:
183
172
  - - ">="
184
173
  - !ruby/object:Gem::Version
185
- version: 3.0.0
174
+ version: 3.1.0
186
175
  required_rubygems_version: !ruby/object:Gem::Requirement
187
176
  requirements:
188
177
  - - ">="
189
178
  - !ruby/object:Gem::Version
190
179
  version: '0'
191
180
  requirements: []
192
- rubygems_version: 3.6.9
181
+ rubygems_version: 3.3.27
182
+ signing_key:
193
183
  specification_version: 4
194
184
  summary: LaunchDarkly AI SDK for Ruby
195
185
  test_files: []