easy_talk 3.2.0 → 3.3.1

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -43
  3. data/CHANGELOG.md +105 -0
  4. data/README.md +510 -2018
  5. data/docs/json_schema_compliance.md +140 -26
  6. data/docs/primitive-schema-rfc.md +894 -0
  7. data/examples/ruby_llm/Gemfile +12 -0
  8. data/examples/ruby_llm/structured_output.rb +47 -0
  9. data/examples/ruby_llm/tools_integration.rb +49 -0
  10. data/lib/easy_talk/builders/base_builder.rb +2 -1
  11. data/lib/easy_talk/builders/boolean_builder.rb +2 -1
  12. data/lib/easy_talk/builders/collection_helpers.rb +4 -0
  13. data/lib/easy_talk/builders/composition_builder.rb +7 -2
  14. data/lib/easy_talk/builders/integer_builder.rb +2 -1
  15. data/lib/easy_talk/builders/null_builder.rb +4 -1
  16. data/lib/easy_talk/builders/number_builder.rb +4 -1
  17. data/lib/easy_talk/builders/object_builder.rb +64 -3
  18. data/lib/easy_talk/builders/registry.rb +15 -1
  19. data/lib/easy_talk/builders/string_builder.rb +3 -1
  20. data/lib/easy_talk/builders/temporal_builder.rb +7 -0
  21. data/lib/easy_talk/builders/tuple_builder.rb +89 -0
  22. data/lib/easy_talk/builders/typed_array_builder.rb +4 -2
  23. data/lib/easy_talk/builders/union_builder.rb +5 -1
  24. data/lib/easy_talk/configuration.rb +17 -2
  25. data/lib/easy_talk/errors.rb +1 -0
  26. data/lib/easy_talk/errors_helper.rb +3 -0
  27. data/lib/easy_talk/extensions/ruby_llm_compatibility.rb +58 -0
  28. data/lib/easy_talk/json_schema_equality.rb +46 -0
  29. data/lib/easy_talk/keywords.rb +0 -1
  30. data/lib/easy_talk/model.rb +42 -1
  31. data/lib/easy_talk/model_helper.rb +4 -0
  32. data/lib/easy_talk/naming_strategies.rb +4 -0
  33. data/lib/easy_talk/property.rb +7 -0
  34. data/lib/easy_talk/ref_helper.rb +6 -0
  35. data/lib/easy_talk/schema.rb +1 -0
  36. data/lib/easy_talk/schema_definition.rb +52 -6
  37. data/lib/easy_talk/schema_methods.rb +36 -5
  38. data/lib/easy_talk/sorbet_extension.rb +1 -0
  39. data/lib/easy_talk/type_introspection.rb +45 -1
  40. data/lib/easy_talk/types/tuple.rb +77 -0
  41. data/lib/easy_talk/validation_adapters/active_model_adapter.rb +350 -62
  42. data/lib/easy_talk/validation_adapters/active_model_schema_validation.rb +106 -0
  43. data/lib/easy_talk/validation_adapters/base.rb +12 -0
  44. data/lib/easy_talk/validation_adapters/none_adapter.rb +9 -0
  45. data/lib/easy_talk/validation_builder.rb +1 -0
  46. data/lib/easy_talk/version.rb +1 -1
  47. data/lib/easy_talk.rb +1 -0
  48. metadata +17 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_talk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Bayona
@@ -77,8 +77,11 @@ dependencies:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0.5'
80
- description: Generate json-schema from plain Ruby classes with ActiveModel integration
81
- for validations and serialization.
80
+ description: Define schemas using a clean DSL and get both JSON Schema documents and
81
+ runtime validations. Perfect for API request/response validation, LLM function definitions
82
+ (OpenAI, Anthropic), and structured data modeling. Features Sorbet-style types,
83
+ schema composition, pluggable validation adapters, and multiple error output formats
84
+ (JSON:API, RFC 7807).
82
85
  email:
83
86
  - bayona.sergio@gmail.com
84
87
  executables: []
@@ -100,8 +103,12 @@ files:
100
103
  - docs/index.markdown
101
104
  - docs/json_schema_compliance.md
102
105
  - docs/nested-models.markdown
106
+ - docs/primitive-schema-rfc.md
103
107
  - docs/property-types.markdown
104
108
  - docs/schema-definition.markdown
109
+ - examples/ruby_llm/Gemfile
110
+ - examples/ruby_llm/structured_output.rb
111
+ - examples/ruby_llm/tools_integration.rb
105
112
  - lib/easy_talk.rb
106
113
  - lib/easy_talk/builders/base_builder.rb
107
114
  - lib/easy_talk/builders/boolean_builder.rb
@@ -114,6 +121,7 @@ files:
114
121
  - lib/easy_talk/builders/registry.rb
115
122
  - lib/easy_talk/builders/string_builder.rb
116
123
  - lib/easy_talk/builders/temporal_builder.rb
124
+ - lib/easy_talk/builders/tuple_builder.rb
117
125
  - lib/easy_talk/builders/typed_array_builder.rb
118
126
  - lib/easy_talk/builders/union_builder.rb
119
127
  - lib/easy_talk/configuration.rb
@@ -127,6 +135,8 @@ files:
127
135
  - lib/easy_talk/error_formatter/rfc7807.rb
128
136
  - lib/easy_talk/errors.rb
129
137
  - lib/easy_talk/errors_helper.rb
138
+ - lib/easy_talk/extensions/ruby_llm_compatibility.rb
139
+ - lib/easy_talk/json_schema_equality.rb
130
140
  - lib/easy_talk/keywords.rb
131
141
  - lib/easy_talk/model.rb
132
142
  - lib/easy_talk/model_helper.rb
@@ -141,7 +151,9 @@ files:
141
151
  - lib/easy_talk/type_introspection.rb
142
152
  - lib/easy_talk/types/base_composer.rb
143
153
  - lib/easy_talk/types/composer.rb
154
+ - lib/easy_talk/types/tuple.rb
144
155
  - lib/easy_talk/validation_adapters/active_model_adapter.rb
156
+ - lib/easy_talk/validation_adapters/active_model_schema_validation.rb
145
157
  - lib/easy_talk/validation_adapters/base.rb
146
158
  - lib/easy_talk/validation_adapters/none_adapter.rb
147
159
  - lib/easy_talk/validation_adapters/registry.rb
@@ -171,5 +183,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
183
  requirements: []
172
184
  rubygems_version: 3.7.2
173
185
  specification_version: 4
174
- summary: Generate json-schema from Ruby classes with ActiveModel integration.
186
+ summary: JSON Schema generation and validation for Ruby classes, ideal for LLM function
187
+ calling.
175
188
  test_files: []