durable-llm 0.1.4 → 0.1.6

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +7 -0
  3. data/CHANGELOG.md +5 -0
  4. data/CLI.md +0 -2
  5. data/Gemfile +7 -9
  6. data/README.md +564 -30
  7. data/Rakefile +16 -6
  8. data/devenv.lock +171 -0
  9. data/devenv.nix +12 -0
  10. data/devenv.yaml +8 -0
  11. data/durable-llm.gemspec +52 -0
  12. data/examples/openai_quick_complete.rb +4 -2
  13. data/lib/durable/llm/cli.rb +218 -22
  14. data/lib/durable/llm/client.rb +228 -8
  15. data/lib/durable/llm/configuration.rb +163 -10
  16. data/lib/durable/llm/convenience.rb +102 -0
  17. data/lib/durable/llm/errors.rb +185 -0
  18. data/lib/durable/llm/provider_utilities.rb +201 -0
  19. data/lib/durable/llm/providers/anthropic.rb +232 -24
  20. data/lib/durable/llm/providers/azure_openai.rb +347 -0
  21. data/lib/durable/llm/providers/base.rb +220 -11
  22. data/lib/durable/llm/providers/cohere.rb +157 -11
  23. data/lib/durable/llm/providers/deepseek.rb +233 -0
  24. data/lib/durable/llm/providers/fireworks.rb +304 -0
  25. data/lib/durable/llm/providers/google.rb +327 -0
  26. data/lib/durable/llm/providers/groq.rb +133 -25
  27. data/lib/durable/llm/providers/huggingface.rb +120 -17
  28. data/lib/durable/llm/providers/mistral.rb +431 -0
  29. data/lib/durable/llm/providers/openai.rb +150 -4
  30. data/lib/durable/llm/providers/opencode.rb +253 -0
  31. data/lib/durable/llm/providers/openrouter.rb +256 -0
  32. data/lib/durable/llm/providers/perplexity.rb +273 -0
  33. data/lib/durable/llm/providers/together.rb +346 -0
  34. data/lib/durable/llm/providers/xai.rb +355 -0
  35. data/lib/durable/llm/providers.rb +113 -13
  36. data/lib/durable/llm/response_helpers.rb +185 -0
  37. data/lib/durable/llm/version.rb +5 -1
  38. data/lib/durable/llm.rb +214 -1
  39. data/lib/durable.rb +29 -4
  40. data/sig/durable/llm.rbs +303 -1
  41. metadata +106 -28
  42. data/Gemfile.lock +0 -103
data/sig/durable/llm.rbs CHANGED
@@ -1,6 +1,308 @@
1
1
  module Durable
2
2
  module Llm
3
3
  VERSION: String
4
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+
5
+ def self.configure: () { (Configuration) -> void } -> void
6
+ def self.configuration: () -> Configuration
7
+ def self.config: () -> Configuration
8
+
9
+ class Error < StandardError
10
+ end
11
+
12
+ class APIError < Error
13
+ end
14
+
15
+ class RateLimitError < Error
16
+ end
17
+
18
+ class AuthenticationError < Error
19
+ end
20
+
21
+ class InvalidRequestError < Error
22
+ end
23
+
24
+ class ResourceNotFoundError < Error
25
+ end
26
+
27
+ class TimeoutError < Error
28
+ end
29
+
30
+ class ServerError < Error
31
+ end
32
+
33
+ class UnsupportedProviderError < Error
34
+ end
35
+
36
+ class ConfigurationError < Error
37
+ end
38
+
39
+ class ModelNotFoundError < Error
40
+ end
41
+
42
+ class InsufficientQuotaError < Error
43
+ end
44
+
45
+ class InvalidResponseError < Error
46
+ end
47
+
48
+ class NetworkError < Error
49
+ end
50
+
51
+ class StreamingError < Error
52
+ end
53
+
54
+ class Configuration
55
+ attr_accessor default_provider: String
56
+ attr_reader providers: Hash[Symbol, untyped]
57
+
58
+ def initialize: () -> void
59
+ def clear: () -> void
60
+ def load_from_datasette: () -> void
61
+ def load_from_env: () -> void
62
+ def method_missing: (Symbol method_name, *untyped args) -> untyped
63
+ def respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
64
+ end
65
+
66
+ class Client
67
+ attr_reader provider: untyped
68
+ attr_accessor model: String?
69
+
70
+ def initialize: (Symbol | String provider_name, ?Hash[Symbol | String, untyped] options) -> void
71
+ def default_params: () -> Hash[Symbol, String?]
72
+ def complete: (String text, ?Hash[Symbol, untyped] _opts) -> String
73
+ alias quick_complete complete
74
+ def completion: (?Hash[Symbol, untyped] params) -> untyped
75
+ def chat: (?Hash[Symbol, untyped] params) -> untyped
76
+ def embed: (?Hash[Symbol, untyped] params) -> untyped
77
+ def stream: (?Hash[Symbol, untyped] params) { (untyped) -> void } -> untyped
78
+ def stream?: () -> bool
79
+
80
+ private
81
+ def process_params: (?Hash[Symbol, untyped] opts) -> Hash[Symbol, untyped]
82
+ end
83
+
84
+ module Providers
85
+ def self.load_all: () -> void
86
+ def self.providers: () -> Array[Symbol]
87
+ def self.model_ids: () -> Array[String]
88
+ def self.model_id_to_provider: (String model_id) -> Class?
89
+
90
+ class Base
91
+ attr_accessor api_key: String?
92
+
93
+ def initialize: (?api_key: String?) -> void
94
+ def default_api_key: () -> String?
95
+ def completion: (Hash[Symbol | String, untyped] options) -> untyped
96
+ def self.models: () -> Array[String]
97
+ def models: () -> Array[String]
98
+ def self.stream?: () -> bool
99
+ def stream?: () -> bool
100
+ def stream: (Hash[Symbol | String, untyped] options) { (untyped) -> void } -> untyped
101
+ def embedding: (model: String, input: String | Array[String], **untyped options) -> untyped
102
+
103
+ private
104
+ def handle_response: (untyped response) -> untyped
105
+ end
106
+
107
+ class OpenAI < Base
108
+ BASE_URL: String
109
+ attr_accessor organization: String?
110
+
111
+ def initialize: (?api_key: String?, ?organization: String?) -> void
112
+ def completion: (Hash[Symbol | String, untyped] options) -> OpenAIResponse
113
+ def embedding: (model: String, input: String | Array[String], **untyped options) -> OpenAIEmbeddingResponse
114
+ def models: () -> Array[String]
115
+ def self.stream?: () -> true
116
+ def stream: (Hash[Symbol | String, untyped] options) { (OpenAIStreamResponse) -> void } -> void
117
+
118
+ class OpenAIResponse
119
+ attr_reader raw_response: Hash[String, untyped]
120
+ def initialize: (Hash[String, untyped] response) -> void
121
+ def choices: () -> Array[OpenAIChoice]
122
+ def data: () -> untyped
123
+ def embedding: () -> untyped
124
+ def to_s: () -> String
125
+ end
126
+
127
+ class OpenAIChoice
128
+ attr_reader message: OpenAIMessage
129
+ attr_reader finish_reason: String?
130
+ def initialize: (Hash[String, untyped] choice) -> void
131
+ def to_s: () -> String
132
+ end
133
+
134
+ class OpenAIMessage
135
+ attr_reader role: String
136
+ attr_reader content: String
137
+ def initialize: (Hash[String, untyped] message) -> void
138
+ def to_s: () -> String
139
+ end
140
+
141
+ class OpenAIStreamResponse
142
+ attr_reader choices: OpenAIStreamChoice
143
+ def initialize: (Hash[String, untyped] parsed) -> void
144
+ def to_s: () -> String
145
+ end
146
+
147
+ class OpenAIStreamChoice
148
+ attr_reader delta: OpenAIStreamDelta
149
+ attr_reader finish_reason: String?
150
+ def initialize: (Array[Hash[String, untyped]] | Hash[String, untyped] choice) -> void
151
+ def to_s: () -> String
152
+ end
153
+
154
+ class OpenAIStreamDelta
155
+ attr_reader role: String?
156
+ attr_reader content: String?
157
+ def initialize: (Hash[String, untyped] delta) -> void
158
+ def to_s: () -> String
159
+ end
160
+
161
+ class OpenAIEmbeddingResponse
162
+ attr_reader embedding: Array[Float]
163
+ def initialize: (Hash[String, untyped] data) -> void
164
+ def to_a: () -> Array[Float]
165
+ end
166
+ end
167
+
168
+ class Anthropic < Base
169
+ BASE_URL: String
170
+
171
+ def initialize: (?api_key: String?) -> void
172
+ def completion: (Hash[Symbol | String, untyped] options) -> AnthropicResponse
173
+ def models: () -> Array[String]
174
+ def self.models: () -> Array[String]
175
+ def self.stream?: () -> true
176
+ def stream: (Hash[Symbol | String, untyped] options) { (AnthropicStreamResponse) -> void } -> void
177
+
178
+ class AnthropicResponse
179
+ attr_reader raw_response: Hash[String, untyped]
180
+ def initialize: (Hash[String, untyped] response) -> void
181
+ def choices: () -> Array[AnthropicChoice]
182
+ def to_s: () -> String
183
+ end
184
+
185
+ class AnthropicChoice
186
+ attr_reader message: AnthropicMessage
187
+ def initialize: (untyped content) -> void
188
+ def to_s: () -> String
189
+ end
190
+
191
+ class AnthropicMessage
192
+ attr_reader role: String
193
+ attr_reader content: String
194
+ def initialize: (untyped content) -> void
195
+ def to_s: () -> String
196
+ end
197
+
198
+ class AnthropicStreamResponse
199
+ attr_reader choices: Array[AnthropicStreamChoice]
200
+ def initialize: (String fragment) -> void
201
+ def to_s: () -> String
202
+ end
203
+
204
+ class AnthropicStreamChoice
205
+ attr_reader delta: AnthropicStreamDelta
206
+ def initialize: (Hash[String, untyped] delta) -> void
207
+ def to_s: () -> String
208
+ end
209
+
210
+ class AnthropicStreamDelta
211
+ attr_reader type: String?
212
+ attr_reader text: String?
213
+ def initialize: (Hash[String, untyped] delta) -> void
214
+ def to_s: () -> String
215
+ end
216
+ end
217
+
218
+ class Groq < Base
219
+ BASE_URL: String
220
+
221
+ def self.conn: () -> untyped
222
+ def conn: () -> untyped
223
+ def initialize: (?api_key: String?) -> void
224
+ def completion: (Hash[Symbol | String, untyped] options) -> GroqResponse
225
+ def embedding: (model: String, input: String | Array[String], **untyped options) -> GroqResponse
226
+ def models: () -> Array[String]
227
+ def self.stream?: () -> false
228
+
229
+ class GroqResponse
230
+ attr_reader raw_response: Hash[String, untyped]
231
+ def initialize: (Hash[String, untyped] response) -> void
232
+ def choices: () -> Array[GroqChoice]
233
+ def to_s: () -> String
234
+ def to_h: () -> Hash[String, untyped]
235
+ end
236
+
237
+ class GroqChoice
238
+ attr_reader message: GroqMessage
239
+ attr_reader finish_reason: String?
240
+ def initialize: (Hash[String, untyped] choice) -> void
241
+ def to_s: () -> String
242
+ end
243
+
244
+ class GroqMessage
245
+ attr_reader role: String
246
+ attr_reader content: String
247
+ def initialize: (Hash[String, untyped] message) -> void
248
+ def to_s: () -> String
249
+ end
250
+ end
251
+
252
+ class Huggingface < Base
253
+ BASE_URL: String
254
+
255
+ def initialize: (?api_key: String?) -> void
256
+ def completion: (Hash[Symbol | String, untyped] options) -> HuggingfaceResponse
257
+ def models: () -> Array[String]
258
+ def self.models: () -> Array[String]
259
+
260
+ class HuggingfaceResponse
261
+ attr_reader raw_response: untyped
262
+ def initialize: (untyped response) -> void
263
+ def choices: () -> Array[HuggingfaceChoice]
264
+ def to_s: () -> String
265
+ end
266
+
267
+ class HuggingfaceChoice
268
+ attr_reader text: String
269
+ def initialize: (Hash[String, untyped] choice) -> void
270
+ def to_s: () -> String
271
+ end
272
+ end
273
+
274
+ class Cohere < Base
275
+ BASE_URL: String
276
+
277
+ def initialize: (?api_key: String?) -> void
278
+ def completion: (Hash[Symbol | String, untyped] options) -> CohereResponse
279
+ def models: () -> Array[String]
280
+ def self.stream?: () -> false
281
+
282
+ class CohereResponse
283
+ attr_reader raw_response: Hash[String, untyped]
284
+ def initialize: (Hash[String, untyped] response) -> void
285
+ def choices: () -> Array[CohereChoice]
286
+ def to_s: () -> String
287
+ end
288
+
289
+ class CohereChoice
290
+ attr_reader text: String
291
+ def initialize: (Hash[String, untyped] generation) -> void
292
+ def to_s: () -> String
293
+ end
294
+ end
295
+
296
+ Openai: singleton(OpenAI)
297
+ Claude: singleton(Anthropic)
298
+ Claude3: singleton(Anthropic)
299
+ end
300
+
301
+ class CLI < Thor
302
+ def self.exit_on_failure?: () -> true
303
+ def prompt: (*String prompt) -> void
304
+ def chat: () -> void
305
+ def models: () -> void
306
+ end
5
307
  end
6
308
  end
metadata CHANGED
@@ -1,29 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: durable-llm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durable Programming Team
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-10-10 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: event_stream_parser
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.0'
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.0.0
13
32
  - !ruby/object:Gem::Dependency
14
33
  name: faraday
15
34
  requirement: !ruby/object:Gem::Requirement
16
35
  requirements:
17
- - - ">"
36
+ - - ">="
18
37
  - !ruby/object:Gem::Version
19
38
  version: '1.0'
39
+ - - "<"
40
+ - !ruby/object:Gem::Version
41
+ version: '3.0'
20
42
  type: :runtime
21
43
  prerelease: false
22
44
  version_requirements: !ruby/object:Gem::Requirement
23
45
  requirements:
24
- - - ">"
46
+ - - ">="
25
47
  - !ruby/object:Gem::Version
26
48
  version: '1.0'
49
+ - - "<"
50
+ - !ruby/object:Gem::Version
51
+ version: '3.0'
52
+ - !ruby/object:Gem::Dependency
53
+ name: highline
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '3.1'
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 3.1.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.1'
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 3.1.0
27
72
  - !ruby/object:Gem::Dependency
28
73
  name: json
29
74
  requirement: !ruby/object:Gem::Requirement
@@ -31,6 +76,9 @@ dependencies:
31
76
  - - "~>"
32
77
  - !ruby/object:Gem::Version
33
78
  version: '2.6'
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 2.6.0
34
82
  type: :runtime
35
83
  prerelease: false
36
84
  version_requirements: !ruby/object:Gem::Requirement
@@ -38,62 +86,77 @@ dependencies:
38
86
  - - "~>"
39
87
  - !ruby/object:Gem::Version
40
88
  version: '2.6'
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 2.6.0
41
92
  - !ruby/object:Gem::Dependency
42
- name: thor
93
+ name: ostruct
43
94
  requirement: !ruby/object:Gem::Requirement
44
95
  requirements:
45
96
  - - "~>"
46
97
  - !ruby/object:Gem::Version
47
- version: '1.3'
98
+ version: 0.6.0
48
99
  type: :runtime
49
100
  prerelease: false
50
101
  version_requirements: !ruby/object:Gem::Requirement
51
102
  requirements:
52
103
  - - "~>"
53
104
  - !ruby/object:Gem::Version
54
- version: '1.3'
105
+ version: 0.6.0
55
106
  - !ruby/object:Gem::Dependency
56
- name: zeitwerk
107
+ name: thor
57
108
  requirement: !ruby/object:Gem::Requirement
58
109
  requirements:
59
110
  - - "~>"
60
111
  - !ruby/object:Gem::Version
61
- version: '2.6'
112
+ version: '1.3'
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: 1.3.0
62
116
  type: :runtime
63
117
  prerelease: false
64
118
  version_requirements: !ruby/object:Gem::Requirement
65
119
  requirements:
66
120
  - - "~>"
67
121
  - !ruby/object:Gem::Version
68
- version: '2.6'
122
+ version: '1.3'
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.0
69
126
  - !ruby/object:Gem::Dependency
70
- name: highline
127
+ name: zeitwerk
71
128
  requirement: !ruby/object:Gem::Requirement
72
129
  requirements:
73
130
  - - "~>"
74
131
  - !ruby/object:Gem::Version
75
- version: '3.1'
132
+ version: '2.6'
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 2.6.0
76
136
  type: :runtime
77
137
  prerelease: false
78
138
  version_requirements: !ruby/object:Gem::Requirement
79
139
  requirements:
80
140
  - - "~>"
81
141
  - !ruby/object:Gem::Version
82
- version: '3.1'
142
+ version: '2.6'
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 2.6.0
83
146
  - !ruby/object:Gem::Dependency
84
- name: event_stream_parser
147
+ name: dotenv
85
148
  requirement: !ruby/object:Gem::Requirement
86
149
  requirements:
87
150
  - - "~>"
88
151
  - !ruby/object:Gem::Version
89
- version: '1.0'
90
- type: :runtime
152
+ version: '2.8'
153
+ type: :development
91
154
  prerelease: false
92
155
  version_requirements: !ruby/object:Gem::Requirement
93
156
  requirements:
94
157
  - - "~>"
95
158
  - !ruby/object:Gem::Version
96
- version: '1.0'
159
+ version: '2.8'
97
160
  - !ruby/object:Gem::Dependency
98
161
  name: minitest
99
162
  requirement: !ruby/object:Gem::Requirement
@@ -137,33 +200,33 @@ dependencies:
137
200
  - !ruby/object:Gem::Version
138
201
  version: '1.0'
139
202
  - !ruby/object:Gem::Dependency
140
- name: dotenv
203
+ name: vcr
141
204
  requirement: !ruby/object:Gem::Requirement
142
205
  requirements:
143
206
  - - "~>"
144
207
  - !ruby/object:Gem::Version
145
- version: '2.8'
208
+ version: '6.0'
146
209
  type: :development
147
210
  prerelease: false
148
211
  version_requirements: !ruby/object:Gem::Requirement
149
212
  requirements:
150
213
  - - "~>"
151
214
  - !ruby/object:Gem::Version
152
- version: '2.8'
215
+ version: '6.0'
153
216
  - !ruby/object:Gem::Dependency
154
- name: vcr
217
+ name: yard
155
218
  requirement: !ruby/object:Gem::Requirement
156
219
  requirements:
157
220
  - - "~>"
158
221
  - !ruby/object:Gem::Version
159
- version: '6.0'
222
+ version: '0.9'
160
223
  type: :development
161
224
  prerelease: false
162
225
  version_requirements: !ruby/object:Gem::Requirement
163
226
  requirements:
164
227
  - - "~>"
165
228
  - !ruby/object:Gem::Version
166
- version: '6.0'
229
+ version: '0.9'
167
230
  description: Durable-LLM is a unified interface for interacting with multiple Large
168
231
  Language Model APIs, simplifying integration of AI capabilities into Ruby applications.
169
232
  email:
@@ -172,14 +235,18 @@ executables: []
172
235
  extensions: []
173
236
  extra_rdoc_files: []
174
237
  files:
238
+ - ".envrc"
175
239
  - CHANGELOG.md
176
240
  - CLI.md
177
241
  - CONFIGURE.md
178
242
  - Gemfile
179
- - Gemfile.lock
180
243
  - LICENSE.txt
181
244
  - README.md
182
245
  - Rakefile
246
+ - devenv.lock
247
+ - devenv.nix
248
+ - devenv.yaml
249
+ - durable-llm.gemspec
183
250
  - enterprise/GET_ENTERPRISE.md
184
251
  - examples/anthropic.md
185
252
  - examples/openai.md
@@ -189,14 +256,27 @@ files:
189
256
  - lib/durable/llm/cli.rb
190
257
  - lib/durable/llm/client.rb
191
258
  - lib/durable/llm/configuration.rb
259
+ - lib/durable/llm/convenience.rb
192
260
  - lib/durable/llm/errors.rb
261
+ - lib/durable/llm/provider_utilities.rb
193
262
  - lib/durable/llm/providers.rb
194
263
  - lib/durable/llm/providers/anthropic.rb
264
+ - lib/durable/llm/providers/azure_openai.rb
195
265
  - lib/durable/llm/providers/base.rb
196
266
  - lib/durable/llm/providers/cohere.rb
267
+ - lib/durable/llm/providers/deepseek.rb
268
+ - lib/durable/llm/providers/fireworks.rb
269
+ - lib/durable/llm/providers/google.rb
197
270
  - lib/durable/llm/providers/groq.rb
198
271
  - lib/durable/llm/providers/huggingface.rb
272
+ - lib/durable/llm/providers/mistral.rb
199
273
  - lib/durable/llm/providers/openai.rb
274
+ - lib/durable/llm/providers/opencode.rb
275
+ - lib/durable/llm/providers/openrouter.rb
276
+ - lib/durable/llm/providers/perplexity.rb
277
+ - lib/durable/llm/providers/together.rb
278
+ - lib/durable/llm/providers/xai.rb
279
+ - lib/durable/llm/response_helpers.rb
200
280
  - lib/durable/llm/version.rb
201
281
  - sig/durable/llm.rbs
202
282
  homepage: https://github.com/durableprogramming/durable-llm
@@ -207,7 +287,6 @@ metadata:
207
287
  homepage_uri: https://github.com/durableprogramming/durable-llm
208
288
  source_code_uri: https://github.com/durableprogramming/durable-llm
209
289
  changelog_uri: https://github.com/durableprogramming/durable-llm/blob/main/CHANGELOG.md
210
- post_install_message:
211
290
  rdoc_options: []
212
291
  require_paths:
213
292
  - lib
@@ -222,8 +301,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
301
  - !ruby/object:Gem::Version
223
302
  version: '0'
224
303
  requirements: []
225
- rubygems_version: 3.4.10
226
- signing_key:
304
+ rubygems_version: 3.7.1
227
305
  specification_version: 4
228
306
  summary: A Ruby gem providing access to LLM APIs from various vendors
229
307
  test_files: []
data/Gemfile.lock DELETED
@@ -1,103 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- durable-llm (0.1.3)
5
- event_stream_parser (~> 1.0)
6
- faraday (> 1.0)
7
- highline (~> 3.1)
8
- json (~> 2.6)
9
- thor (~> 1.3)
10
- zeitwerk (~> 2.6)
11
-
12
- GEM
13
- remote: https://rubygems.org/
14
- specs:
15
- addressable (2.8.7)
16
- public_suffix (>= 2.0.2, < 7.0)
17
- ast (2.4.2)
18
- base64 (0.2.0)
19
- bigdecimal (3.1.8)
20
- crack (1.0.0)
21
- bigdecimal
22
- rexml
23
- dotenv (2.8.1)
24
- event_stream_parser (1.0.0)
25
- faraday (2.12.0)
26
- faraday-net_http (>= 2.0, < 3.4)
27
- json
28
- logger
29
- faraday-multipart (1.0.4)
30
- multipart-post (~> 2)
31
- faraday-net_http (3.3.0)
32
- net-http
33
- hashdiff (1.1.1)
34
- highline (3.1.1)
35
- reline
36
- io-console (0.7.2)
37
- json (2.7.2)
38
- language_server-protocol (3.17.0.3)
39
- logger (1.6.1)
40
- minitest (5.25.1)
41
- mocha (2.4.5)
42
- ruby2_keywords (>= 0.0.5)
43
- multipart-post (2.4.1)
44
- net-http (0.4.1)
45
- uri
46
- parallel (1.26.3)
47
- parser (3.3.5.0)
48
- ast (~> 2.4.1)
49
- racc
50
- public_suffix (6.0.1)
51
- racc (1.8.1)
52
- rainbow (3.1.1)
53
- rake (13.2.1)
54
- regexp_parser (2.9.2)
55
- reline (0.5.10)
56
- io-console (~> 0.5)
57
- rexml (3.3.8)
58
- rubocop (1.66.1)
59
- json (~> 2.3)
60
- language_server-protocol (>= 3.17.0)
61
- parallel (~> 1.10)
62
- parser (>= 3.3.0.2)
63
- rainbow (>= 2.2.2, < 4.0)
64
- regexp_parser (>= 2.4, < 3.0)
65
- rubocop-ast (>= 1.32.2, < 2.0)
66
- ruby-progressbar (~> 1.7)
67
- unicode-display_width (>= 2.4.0, < 3.0)
68
- rubocop-ast (1.32.3)
69
- parser (>= 3.3.1.0)
70
- ruby-openai (7.1.0)
71
- event_stream_parser (>= 0.3.0, < 2.0.0)
72
- faraday (>= 1)
73
- faraday-multipart (>= 1)
74
- ruby-progressbar (1.13.0)
75
- ruby2_keywords (0.0.5)
76
- thor (1.3.2)
77
- unicode-display_width (2.6.0)
78
- uri (0.13.1)
79
- vcr (6.3.1)
80
- base64
81
- webmock (3.24.0)
82
- addressable (>= 2.8.0)
83
- crack (>= 0.3.2)
84
- hashdiff (>= 0.4.0, < 2.0.0)
85
- zeitwerk (2.6.18)
86
-
87
- PLATFORMS
88
- x86_64-linux
89
-
90
- DEPENDENCIES
91
- dotenv (~> 2.8)
92
- durable-llm!
93
- minitest (~> 5.0)
94
- mocha (~> 2.1)
95
- rake (~> 13.0)
96
- rubocop (~> 1.21)
97
- ruby-openai (~> 7.1)
98
- thor (~> 1.3)
99
- vcr (~> 6.0)
100
- webmock (~> 3.24)
101
-
102
- BUNDLED WITH
103
- 2.4.10