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 +4 -4
- data/CHANGELOG.md +27 -0
- data/PROVENANCE.md +1 -1
- data/README.md +12 -1
- data/lib/launchdarkly-server-sdk-ai.rb +1 -0
- data/lib/server/ai/client.rb +53 -12
- data/lib/server/ai/sdk_info.rb +10 -0
- data/lib/server/ai/version.rb +1 -1
- metadata +8 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 841cd2b74f8a6e89125e283d2c75442ccb58d64373f04439f882b9d968803818
|
|
4
|
+
data.tar.gz: 85a82738b8c931e8a9dc466a9cc66ec077e20a2e58fb112e01cd286b1bf551df
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
data/README.md
CHANGED
|
@@ -7,6 +7,17 @@ LaunchDarkly Server SDK AI library for Ruby
|
|
|
7
7
|
[](https://www.rubydoc.info/gems/launchdarkly-server-sdk-ai)
|
|
8
8
|
[](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.
|
|
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
|
-----------
|
data/lib/server/ai/client.rb
CHANGED
|
@@ -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
|
|
173
|
+
# @param key [String] The key of the configuration flag
|
|
144
174
|
# @param context [LDContext] The context used when evaluating the flag
|
|
145
|
-
# @param
|
|
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
|
|
150
|
-
@ld_client.track(
|
|
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
|
-
|
|
195
|
+
key,
|
|
154
196
|
context,
|
|
155
|
-
|
|
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:
|
|
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:
|
|
236
|
+
context:
|
|
196
237
|
)
|
|
197
238
|
|
|
198
239
|
AIConfig.new(
|
|
199
240
|
enabled: variation.dig(:_ldMeta, :enabled) || false,
|
|
200
|
-
messages
|
|
201
|
-
tracker
|
|
202
|
-
model
|
|
241
|
+
messages:,
|
|
242
|
+
tracker:,
|
|
243
|
+
model:,
|
|
203
244
|
provider: provider_config
|
|
204
245
|
)
|
|
205
246
|
end
|
data/lib/server/ai/version.rb
CHANGED
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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: []
|