ruby_llm-contract 0.10.6 → 1.1.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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +354 -211
  4. data/README.md +12 -2
  5. data/docs/guide/getting_started.md +3 -1
  6. data/docs/guide/llm_judge.md +1 -1
  7. data/docs/guide/multimodal_input.md +4 -3
  8. data/docs/guide/output_schema.md +2 -2
  9. data/docs/guide/testing.md +1 -1
  10. data/examples/README.md +1 -1
  11. data/lib/ruby_llm/contract/adapters/ruby_llm.rb +13 -9
  12. data/lib/ruby_llm/contract/concerns/context_helpers.rb +0 -2
  13. data/lib/ruby_llm/contract/concerns/deep_symbolize.rb +0 -1
  14. data/lib/ruby_llm/contract/contract/parser.rb +0 -3
  15. data/lib/ruby_llm/contract/contract/schema_validator/bound_rule.rb +0 -1
  16. data/lib/ruby_llm/contract/contract/schema_validator/enum_rule.rb +0 -1
  17. data/lib/ruby_llm/contract/contract/schema_validator/node.rb +0 -4
  18. data/lib/ruby_llm/contract/contract/schema_validator/scalar_rules.rb +0 -1
  19. data/lib/ruby_llm/contract/contract/schema_validator/type_rule.rb +0 -1
  20. data/lib/ruby_llm/contract/cost_calculator.rb +28 -2
  21. data/lib/ruby_llm/contract/eval/aggregated_report.rb +4 -0
  22. data/lib/ruby_llm/contract/eval/baseline_diff.rb +22 -3
  23. data/lib/ruby_llm/contract/eval/candidate_label.rb +31 -0
  24. data/lib/ruby_llm/contract/eval/case_executor.rb +2 -2
  25. data/lib/ruby_llm/contract/eval/case_result.rb +17 -3
  26. data/lib/ruby_llm/contract/eval/case_result_builder.rb +2 -1
  27. data/lib/ruby_llm/contract/eval/contract_detail_builder.rb +0 -2
  28. data/lib/ruby_llm/contract/eval/model_comparison.rb +3 -2
  29. data/lib/ruby_llm/contract/eval/pipeline_result_adapter.rb +1 -2
  30. data/lib/ruby_llm/contract/eval/prompt_diff_comparator.rb +0 -1
  31. data/lib/ruby_llm/contract/eval/prompt_diff_presenter.rb +0 -1
  32. data/lib/ruby_llm/contract/eval/prompt_diff_serializer.rb +0 -1
  33. data/lib/ruby_llm/contract/eval/report.rb +1 -1
  34. data/lib/ruby_llm/contract/eval/report_presenter.rb +0 -1
  35. data/lib/ruby_llm/contract/eval/report_stats.rb +5 -1
  36. data/lib/ruby_llm/contract/eval/report_storage.rb +0 -1
  37. data/lib/ruby_llm/contract/eval/retry_optimizer.rb +10 -20
  38. data/lib/ruby_llm/contract/eval/step_expectation_applier.rb +2 -1
  39. data/lib/ruby_llm/contract/eval/trait_evaluator.rb +0 -2
  40. data/lib/ruby_llm/contract/eval/unknown_cost_gate.rb +40 -0
  41. data/lib/ruby_llm/contract/eval.rb +2 -0
  42. data/lib/ruby_llm/contract/minitest.rb +6 -1
  43. data/lib/ruby_llm/contract/pipeline/runner.rb +0 -1
  44. data/lib/ruby_llm/contract/pipeline/trace.rb +7 -0
  45. data/lib/ruby_llm/contract/rake_task/suite_gate.rb +18 -21
  46. data/lib/ruby_llm/contract/rake_task.rb +9 -4
  47. data/lib/ruby_llm/contract/rspec/pass_eval.rb +80 -52
  48. data/lib/ruby_llm/contract/step/base.rb +12 -3
  49. data/lib/ruby_llm/contract/step/dsl.rb +2 -4
  50. data/lib/ruby_llm/contract/step/limit_checker.rb +0 -2
  51. data/lib/ruby_llm/contract/step/retry_executor.rb +0 -2
  52. data/lib/ruby_llm/contract/step/trace.rb +19 -0
  53. data/lib/ruby_llm/contract/token_estimator.rb +0 -2
  54. data/lib/ruby_llm/contract/version.rb +1 -1
  55. data/lib/ruby_llm/contract.rb +0 -4
  56. data/ruby_llm-contract.gemspec +6 -5
  57. metadata +9 -11
  58. data/.rubocop.yml +0 -58
  59. data/Gemfile +0 -13
  60. data/Gemfile.lock +0 -278
  61. data/Rakefile +0 -8
@@ -16,7 +16,6 @@ Gem::Specification.new do |spec|
16
16
  spec.license = "MIT"
17
17
  spec.required_ruby_version = ">= 3.2.0"
18
18
 
19
- spec.metadata["homepage_uri"] = spec.homepage
20
19
  spec.metadata["source_code_uri"] = spec.homepage
21
20
  spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
22
21
  spec.metadata["documentation_uri"] = "#{spec.homepage}#readme"
@@ -25,16 +24,18 @@ Gem::Specification.new do |spec|
25
24
  spec.files = Dir.chdir(__dir__) do
26
25
  # Internal trackers + dev configs excluded so the published gem
27
26
  # contains only what adopters actually need at runtime.
28
- excluded_files = %w[TODO.md .rspec .rubycritic.yml .simplecov]
27
+ excluded_files = %w[.rspec .simplecov .rubocop.yml .rubocop_todo.yml Gemfile Rakefile]
29
28
  `git ls-files -z`.split("\x0").reject do |f|
30
29
  (File.expand_path(f) == __FILE__) ||
31
- f.start_with?("spec/", "docs/ideas/", "doc/", ".ai/", ".claude/", ".git", ".revive/") ||
30
+ f.start_with?("spec/", "docs/ideas/", "doc/", ".ai/", ".claude/", ".git",
31
+ ".revive/", "gemfiles/") ||
32
32
  excluded_files.include?(f)
33
33
  end
34
34
  end
35
35
  spec.require_paths = ["lib"]
36
36
 
37
37
  spec.add_dependency "dry-types", "~> 1.7"
38
- spec.add_dependency "ruby_llm", "~> 1.12"
39
- spec.add_dependency "ruby_llm-schema", "~> 0.3"
38
+ spec.add_dependency "ruby_llm", "~> 2.0"
39
+ # schematist is what ruby_llm-schema became; ruby_llm 2.x depends on it too.
40
+ spec.add_dependency "schematist", "~> 1.1"
40
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_llm-contract
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.6
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justyna
@@ -29,28 +29,28 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '1.12'
32
+ version: '2.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '1.12'
39
+ version: '2.0'
40
40
  - !ruby/object:Gem::Dependency
41
- name: ruby_llm-schema
41
+ name: schematist
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.3'
46
+ version: '1.1'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.3'
53
+ version: '1.1'
54
54
  description: Wraps RubyLLM::Chat with input/output contracts, business-rule validation,
55
55
  retry with model escalation on validation failure, pre-flight cost ceilings, and
56
56
  an evaluation framework. Sibling abstraction to RubyLLM::Agent — same niche (reusable
@@ -59,13 +59,10 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - ".rubocop.yml"
62
+ - ".ruby-version"
63
63
  - CHANGELOG.md
64
- - Gemfile
65
- - Gemfile.lock
66
64
  - LICENSE
67
65
  - README.md
68
- - Rakefile
69
66
  - docs/architecture.md
70
67
  - docs/guide/best_practices.md
71
68
  - docs/guide/eval_first.md
@@ -124,6 +121,7 @@ files:
124
121
  - lib/ruby_llm/contract/eval.rb
125
122
  - lib/ruby_llm/contract/eval/aggregated_report.rb
126
123
  - lib/ruby_llm/contract/eval/baseline_diff.rb
124
+ - lib/ruby_llm/contract/eval/candidate_label.rb
127
125
  - lib/ruby_llm/contract/eval/case_executor.rb
128
126
  - lib/ruby_llm/contract/eval/case_result.rb
129
127
  - lib/ruby_llm/contract/eval/case_result_builder.rb
@@ -155,6 +153,7 @@ files:
155
153
  - lib/ruby_llm/contract/eval/step_expectation_applier.rb
156
154
  - lib/ruby_llm/contract/eval/step_result_normalizer.rb
157
155
  - lib/ruby_llm/contract/eval/trait_evaluator.rb
156
+ - lib/ruby_llm/contract/eval/unknown_cost_gate.rb
158
157
  - lib/ruby_llm/contract/minitest.rb
159
158
  - lib/ruby_llm/contract/pipeline.rb
160
159
  - lib/ruby_llm/contract/pipeline/base.rb
@@ -200,7 +199,6 @@ homepage: https://github.com/justi/ruby_llm-contract
200
199
  licenses:
201
200
  - MIT
202
201
  metadata:
203
- homepage_uri: https://github.com/justi/ruby_llm-contract
204
202
  source_code_uri: https://github.com/justi/ruby_llm-contract
205
203
  changelog_uri: https://github.com/justi/ruby_llm-contract/blob/main/CHANGELOG.md
206
204
  documentation_uri: https://github.com/justi/ruby_llm-contract#readme
data/.rubocop.yml DELETED
@@ -1,58 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 3.2
3
- NewCops: enable
4
- SuggestExtensions: false
5
-
6
- Style/Documentation:
7
- Enabled: false
8
-
9
- Style/StringLiterals:
10
- EnforcedStyle: double_quotes
11
-
12
- Style/StringLiteralsInInterpolation:
13
- EnforcedStyle: double_quotes
14
-
15
- Metrics/BlockLength:
16
- Exclude:
17
- - 'spec/**/*'
18
- - '*.gemspec'
19
-
20
- Metrics/MethodLength:
21
- Max: 25
22
-
23
- Layout/LineLength:
24
- Max: 120
25
-
26
- Style/OneClassPerFile:
27
- Exclude:
28
- - 'spec/**/*'
29
- - 'examples/**/*'
30
-
31
- Lint/UnusedBlockArgument:
32
- Exclude:
33
- - 'spec/**/*'
34
-
35
- Naming/VariableNumber:
36
- Exclude:
37
- - 'spec/**/*'
38
- - 'examples/**/*'
39
-
40
- AllCops:
41
- Exclude:
42
- - 'internal/**/*'
43
-
44
- Metrics/ClassLength:
45
- Max: 140
46
-
47
- Metrics/ModuleLength:
48
- Max: 150
49
-
50
- Metrics/AbcSize:
51
- Max: 30
52
-
53
- Metrics/ParameterLists:
54
- Max: 12
55
- MaxOptionalParameters: 10
56
-
57
- Style/FormatStringToken:
58
- Enabled: false
data/Gemfile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source "https://rubygems.org"
4
-
5
- gemspec
6
-
7
- group :development, :test do
8
- gem "rake", "~> 13.0"
9
- gem "rspec", "~> 3.13"
10
- gem "rubocop", "~> 1.75"
11
- gem "rubycritic", "~> 4.9"
12
- gem "simplecov", "~> 0.22"
13
- end
data/Gemfile.lock DELETED
@@ -1,278 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ruby_llm-contract (0.10.4)
5
- dry-types (~> 1.7)
6
- ruby_llm (~> 1.12)
7
- ruby_llm-schema (~> 0.3)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- addressable (2.8.9)
13
- public_suffix (>= 2.0.2, < 8.0)
14
- ast (2.4.3)
15
- axiom-types (0.1.1)
16
- descendants_tracker (~> 0.0.4)
17
- ice_nine (~> 0.11.0)
18
- thread_safe (~> 0.3, >= 0.3.1)
19
- base64 (0.3.0)
20
- bigdecimal (4.0.1)
21
- childprocess (5.1.0)
22
- logger (~> 1.5)
23
- coercible (1.0.0)
24
- descendants_tracker (~> 0.0.1)
25
- concurrent-ruby (1.3.6)
26
- descendants_tracker (0.0.4)
27
- thread_safe (~> 0.3, >= 0.3.1)
28
- diff-lcs (1.6.2)
29
- docile (1.4.1)
30
- dry-configurable (1.3.0)
31
- dry-core (~> 1.1)
32
- zeitwerk (~> 2.6)
33
- dry-core (1.2.0)
34
- concurrent-ruby (~> 1.0)
35
- logger
36
- zeitwerk (~> 2.6)
37
- dry-inflector (1.3.1)
38
- dry-initializer (3.2.0)
39
- dry-logic (1.6.0)
40
- bigdecimal
41
- concurrent-ruby (~> 1.0)
42
- dry-core (~> 1.1)
43
- zeitwerk (~> 2.6)
44
- dry-schema (1.16.0)
45
- concurrent-ruby (~> 1.0)
46
- dry-configurable (~> 1.0, >= 1.0.1)
47
- dry-core (~> 1.1)
48
- dry-initializer (~> 3.2)
49
- dry-logic (~> 1.6)
50
- dry-types (~> 1.9, >= 1.9.1)
51
- zeitwerk (~> 2.6)
52
- dry-types (1.9.1)
53
- bigdecimal (>= 3.0)
54
- concurrent-ruby (~> 1.0)
55
- dry-core (~> 1.0)
56
- dry-inflector (~> 1.0)
57
- dry-logic (~> 1.4)
58
- zeitwerk (~> 2.6)
59
- erubi (1.13.1)
60
- event_stream_parser (1.0.0)
61
- faraday (2.14.1)
62
- faraday-net_http (>= 2.0, < 3.5)
63
- json
64
- logger
65
- faraday-multipart (1.2.0)
66
- multipart-post (~> 2.0)
67
- faraday-net_http (3.4.2)
68
- net-http (~> 0.5)
69
- faraday-retry (2.4.0)
70
- faraday (~> 2.0)
71
- flay (2.14.3)
72
- erubi (~> 1.10)
73
- path_expander (~> 2.0)
74
- prism (~> 1.7)
75
- sexp_processor (~> 4.0)
76
- flog (4.9.4)
77
- path_expander (~> 2.0)
78
- prism (~> 1.7)
79
- sexp_processor (~> 4.8)
80
- ice_nine (0.11.2)
81
- json (2.19.2)
82
- json-schema (6.2.0)
83
- addressable (~> 2.8)
84
- bigdecimal (>= 3.1, < 5)
85
- language_server-protocol (3.17.0.5)
86
- launchy (3.1.1)
87
- addressable (~> 2.8)
88
- childprocess (~> 5.0)
89
- logger (~> 1.6)
90
- lint_roller (1.1.0)
91
- logger (1.7.0)
92
- marcel (1.1.0)
93
- mcp (0.9.0)
94
- json-schema (>= 4.1)
95
- multipart-post (2.4.1)
96
- net-http (0.9.1)
97
- uri (>= 0.11.1)
98
- parallel (1.27.0)
99
- parser (3.3.10.2)
100
- ast (~> 2.4.1)
101
- racc
102
- path_expander (2.0.1)
103
- prism (1.9.0)
104
- public_suffix (7.0.5)
105
- racc (1.8.1)
106
- rainbow (3.1.1)
107
- rake (13.3.1)
108
- reek (6.5.0)
109
- dry-schema (~> 1.13)
110
- logger (~> 1.6)
111
- parser (~> 3.3.0)
112
- rainbow (>= 2.0, < 4.0)
113
- rexml (~> 3.1)
114
- regexp_parser (2.11.3)
115
- rexml (3.4.4)
116
- rspec (3.13.2)
117
- rspec-core (~> 3.13.0)
118
- rspec-expectations (~> 3.13.0)
119
- rspec-mocks (~> 3.13.0)
120
- rspec-core (3.13.6)
121
- rspec-support (~> 3.13.0)
122
- rspec-expectations (3.13.5)
123
- diff-lcs (>= 1.2.0, < 2.0)
124
- rspec-support (~> 3.13.0)
125
- rspec-mocks (3.13.8)
126
- diff-lcs (>= 1.2.0, < 2.0)
127
- rspec-support (~> 3.13.0)
128
- rspec-support (3.13.7)
129
- rubocop (1.85.1)
130
- json (~> 2.3)
131
- language_server-protocol (~> 3.17.0.2)
132
- lint_roller (~> 1.1.0)
133
- mcp (~> 0.6)
134
- parallel (~> 1.10)
135
- parser (>= 3.3.0.2)
136
- rainbow (>= 2.2.2, < 4.0)
137
- regexp_parser (>= 2.9.3, < 3.0)
138
- rubocop-ast (>= 1.49.0, < 2.0)
139
- ruby-progressbar (~> 1.7)
140
- unicode-display_width (>= 2.4.0, < 4.0)
141
- rubocop-ast (1.49.1)
142
- parser (>= 3.3.7.2)
143
- prism (~> 1.7)
144
- ruby-progressbar (1.13.0)
145
- ruby_llm (1.14.0)
146
- base64
147
- event_stream_parser (~> 1)
148
- faraday (>= 1.10.0)
149
- faraday-multipart (>= 1)
150
- faraday-net_http (>= 1)
151
- faraday-retry (>= 1)
152
- marcel (~> 1)
153
- ruby_llm-schema (~> 0)
154
- zeitwerk (~> 2)
155
- ruby_llm-schema (0.3.0)
156
- ruby_parser (3.22.0)
157
- racc (~> 1.5)
158
- sexp_processor (~> 4.16)
159
- rubycritic (4.12.0)
160
- flay (~> 2.13)
161
- flog (~> 4.7)
162
- launchy (>= 2.5.2)
163
- parser (>= 3.3.0.5)
164
- prism (>= 1.6.0)
165
- rainbow (~> 3.1.1)
166
- reek (~> 6.5.0, < 7.0)
167
- rexml
168
- ruby_parser (~> 3.21)
169
- simplecov (>= 0.22.0)
170
- tty-which (~> 0.5.0)
171
- virtus (~> 2.0)
172
- sexp_processor (4.17.5)
173
- simplecov (0.22.0)
174
- docile (~> 1.1)
175
- simplecov-html (~> 0.11)
176
- simplecov_json_formatter (~> 0.1)
177
- simplecov-html (0.13.2)
178
- simplecov_json_formatter (0.1.4)
179
- thread_safe (0.3.6)
180
- tty-which (0.5.0)
181
- unicode-display_width (3.2.0)
182
- unicode-emoji (~> 4.1)
183
- unicode-emoji (4.2.0)
184
- uri (1.1.1)
185
- virtus (2.0.0)
186
- axiom-types (~> 0.1)
187
- coercible (~> 1.0)
188
- descendants_tracker (~> 0.0, >= 0.0.3)
189
- zeitwerk (2.7.5)
190
-
191
- PLATFORMS
192
- arm64-darwin-25
193
- ruby
194
-
195
- DEPENDENCIES
196
- rake (~> 13.0)
197
- rspec (~> 3.13)
198
- rubocop (~> 1.75)
199
- ruby_llm-contract!
200
- rubycritic (~> 4.9)
201
- simplecov (~> 0.22)
202
-
203
- CHECKSUMS
204
- addressable (2.8.9) sha256=cc154fcbe689711808a43601dee7b980238ce54368d23e127421753e46895485
205
- ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
206
- axiom-types (0.1.1) sha256=c1ff113f3de516fa195b2db7e0a9a95fd1b08475a502ff660d04507a09980383
207
- base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
208
- bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
209
- childprocess (5.1.0) sha256=9a8d484be2fd4096a0e90a0cd3e449a05bc3aa33f8ac9e4d6dcef6ac1455b6ec
210
- coercible (1.0.0) sha256=5081ad24352cc8435ce5472bc2faa30260c7ea7f2102cc6a9f167c4d9bffaadc
211
- concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
212
- descendants_tracker (0.0.4) sha256=e9c41dd4cfbb85829a9301ea7e7c48c2a03b26f09319db230e6479ccdc780897
213
- diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
214
- docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
215
- dry-configurable (1.3.0) sha256=882d862858567fc1210d2549d4c090f34370fc1bb7c5c1933de3fe792e18afa8
216
- dry-core (1.2.0) sha256=0cc5a7da88df397f153947eeeae42e876e999c1e30900f3c536fb173854e96a1
217
- dry-inflector (1.3.1) sha256=7fb0c2bb04f67638f25c52e7ba39ab435d922a3a5c3cd196120f63accb682dcc
218
- dry-initializer (3.2.0) sha256=37d59798f912dc0a1efe14a4db4a9306989007b302dcd5f25d0a2a20c166c4e3
219
- dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2
220
- dry-schema (1.16.0) sha256=cd3aaeabc0f1af66ec82a29096d4c4fb92a0a58b9dae29a22b1bbceb78985727
221
- dry-types (1.9.1) sha256=baebeecdb9f8395d6c9d227b62011279440943e3ef2468fe8ccc1ba11467f178
222
- erubi (1.13.1) sha256=a082103b0885dbc5ecf1172fede897f9ebdb745a4b97a5e8dc63953db1ee4ad9
223
- event_stream_parser (1.0.0) sha256=a2683bab70126286f8184dc88f7968ffc4028f813161fb073ec90d171f7de3c8
224
- faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c
225
- faraday-multipart (1.2.0) sha256=7d89a949693714176f612323ca13746a2ded204031a6ba528adee788694ef757
226
- faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c
227
- faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
228
- flay (2.14.3) sha256=7f96a495f4bde880460e77e7345464e752bd44f09f5cd30c80af02afe0ed3f29
229
- flog (4.9.4) sha256=12cc054fab7a2cbd2a906514397c4d7788954d530564782d6f14939dc2dfbcbb
230
- ice_nine (0.11.2) sha256=5d506a7d2723d5592dc121b9928e4931742730131f22a1a37649df1c1e2e63db
231
- json (2.19.2) sha256=e7e1bd318b2c37c4ceee2444841c86539bc462e81f40d134cf97826cb14e83cf
232
- json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666
233
- language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
234
- launchy (3.1.1) sha256=72b847b5cc961589dde2c395af0108c86ff0119f42d4648d25b5440ebb10059e
235
- lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
236
- logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
237
- marcel (1.1.0) sha256=fdcfcfa33cc52e93c4308d40e4090a5d4ea279e160a7f6af988260fa970e0bee
238
- mcp (0.9.0) sha256=a0a3737b0ac9df0772f4ef7e2b013c260ddbcf217a5d50a66bff0baeddf03e47
239
- multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8
240
- net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
241
- parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
242
- parser (3.3.10.2) sha256=6f60c84aa4bdcedb6d1a2434b738fe8a8136807b6adc8f7f53b97da9bc4e9357
243
- path_expander (2.0.1) sha256=2de201164bff4719cc4d0b3767286e9977cc832a59c4d70abab571ec86cb41e4
244
- prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
245
- public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
246
- racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
247
- rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
248
- rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
249
- reek (6.5.0) sha256=d26d3a492773b2bbc228888067a21afe33ac07954a17dbd64cdeae42c4c69be1
250
- regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
251
- rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
252
- rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
253
- rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
254
- rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
255
- rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47
256
- rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
257
- rubocop (1.85.1) sha256=3dbcf9e961baa4c376eeeb2a03913dca5e3987033b04d38fa538aa1e7406cc77
258
- rubocop-ast (1.49.1) sha256=4412f3ee70f6fe4546cc489548e0f6fcf76cafcfa80fa03af67098ffed755035
259
- ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
260
- ruby_llm (1.14.0) sha256=57c6f7034fc4a44504ea137d70f853b07824f1c1cdbe774ab3ab3522e7098deb
261
- ruby_llm-contract (0.10.4)
262
- ruby_llm-schema (0.3.0) sha256=a591edc5ca1b7f0304f0e2261de61ba4b3bea17be09f5cf7558153adfda3dec6
263
- ruby_parser (3.22.0) sha256=1eb4937cd9eb220aa2d194e352a24dba90aef00751e24c8dfffdb14000f15d23
264
- rubycritic (4.12.0) sha256=024fed90fe656fa939f6ea80aab17569699ac3863d0b52fd72cb99892247abc8
265
- sexp_processor (4.17.5) sha256=ae2b48ba98353d5d465ce8759836b7a05f2e12c5879fcd14d7815b026de32f0e
266
- simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
267
- simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
268
- simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
269
- thread_safe (0.3.6) sha256=9ed7072821b51c57e8d6b7011a8e282e25aeea3a4065eab326e43f66f063b05a
270
- tty-which (0.5.0) sha256=5824055f0d6744c97e7c4426544f01d519c40d1806ef2ef47d9854477993f466
271
- unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
272
- unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
273
- uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
274
- virtus (2.0.0) sha256=8841dae4eb7fcc097320ba5ea516bf1839e5d056c61ee27138aa4bddd6e3d1c2
275
- zeitwerk (2.7.5) sha256=d8da92128c09ea6ec62c949011b00ed4a20242b255293dd66bf41545398f73dd
276
-
277
- BUNDLED WITH
278
- 4.0.3
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- task default: :spec