easy_talk 3.2.0 → 3.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +15 -43
  3. data/CHANGELOG.md +89 -0
  4. data/README.md +447 -2115
  5. data/docs/json_schema_compliance.md +140 -26
  6. data/docs/primitive-schema-rfc.md +894 -0
  7. data/lib/easy_talk/builders/base_builder.rb +2 -1
  8. data/lib/easy_talk/builders/boolean_builder.rb +2 -1
  9. data/lib/easy_talk/builders/collection_helpers.rb +4 -0
  10. data/lib/easy_talk/builders/composition_builder.rb +7 -2
  11. data/lib/easy_talk/builders/integer_builder.rb +2 -1
  12. data/lib/easy_talk/builders/null_builder.rb +4 -1
  13. data/lib/easy_talk/builders/number_builder.rb +4 -1
  14. data/lib/easy_talk/builders/object_builder.rb +64 -3
  15. data/lib/easy_talk/builders/registry.rb +15 -1
  16. data/lib/easy_talk/builders/string_builder.rb +3 -1
  17. data/lib/easy_talk/builders/temporal_builder.rb +7 -0
  18. data/lib/easy_talk/builders/tuple_builder.rb +89 -0
  19. data/lib/easy_talk/builders/typed_array_builder.rb +4 -2
  20. data/lib/easy_talk/builders/union_builder.rb +5 -1
  21. data/lib/easy_talk/configuration.rb +17 -2
  22. data/lib/easy_talk/errors.rb +1 -0
  23. data/lib/easy_talk/errors_helper.rb +3 -0
  24. data/lib/easy_talk/json_schema_equality.rb +46 -0
  25. data/lib/easy_talk/keywords.rb +0 -1
  26. data/lib/easy_talk/model.rb +27 -1
  27. data/lib/easy_talk/model_helper.rb +4 -0
  28. data/lib/easy_talk/naming_strategies.rb +4 -0
  29. data/lib/easy_talk/property.rb +7 -0
  30. data/lib/easy_talk/ref_helper.rb +6 -0
  31. data/lib/easy_talk/schema.rb +1 -0
  32. data/lib/easy_talk/schema_definition.rb +52 -6
  33. data/lib/easy_talk/schema_methods.rb +36 -5
  34. data/lib/easy_talk/sorbet_extension.rb +1 -0
  35. data/lib/easy_talk/type_introspection.rb +45 -1
  36. data/lib/easy_talk/types/tuple.rb +77 -0
  37. data/lib/easy_talk/validation_adapters/active_model_adapter.rb +350 -62
  38. data/lib/easy_talk/validation_adapters/active_model_schema_validation.rb +106 -0
  39. data/lib/easy_talk/validation_adapters/base.rb +12 -0
  40. data/lib/easy_talk/validation_adapters/none_adapter.rb +9 -0
  41. data/lib/easy_talk/validation_builder.rb +1 -0
  42. data/lib/easy_talk/version.rb +1 -1
  43. data/lib/easy_talk.rb +1 -0
  44. metadata +13 -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.0
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,6 +103,7 @@ 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
105
109
  - lib/easy_talk.rb
@@ -114,6 +118,7 @@ files:
114
118
  - lib/easy_talk/builders/registry.rb
115
119
  - lib/easy_talk/builders/string_builder.rb
116
120
  - lib/easy_talk/builders/temporal_builder.rb
121
+ - lib/easy_talk/builders/tuple_builder.rb
117
122
  - lib/easy_talk/builders/typed_array_builder.rb
118
123
  - lib/easy_talk/builders/union_builder.rb
119
124
  - lib/easy_talk/configuration.rb
@@ -127,6 +132,7 @@ files:
127
132
  - lib/easy_talk/error_formatter/rfc7807.rb
128
133
  - lib/easy_talk/errors.rb
129
134
  - lib/easy_talk/errors_helper.rb
135
+ - lib/easy_talk/json_schema_equality.rb
130
136
  - lib/easy_talk/keywords.rb
131
137
  - lib/easy_talk/model.rb
132
138
  - lib/easy_talk/model_helper.rb
@@ -141,7 +147,9 @@ files:
141
147
  - lib/easy_talk/type_introspection.rb
142
148
  - lib/easy_talk/types/base_composer.rb
143
149
  - lib/easy_talk/types/composer.rb
150
+ - lib/easy_talk/types/tuple.rb
144
151
  - lib/easy_talk/validation_adapters/active_model_adapter.rb
152
+ - lib/easy_talk/validation_adapters/active_model_schema_validation.rb
145
153
  - lib/easy_talk/validation_adapters/base.rb
146
154
  - lib/easy_talk/validation_adapters/none_adapter.rb
147
155
  - lib/easy_talk/validation_adapters/registry.rb
@@ -171,5 +179,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
179
  requirements: []
172
180
  rubygems_version: 3.7.2
173
181
  specification_version: 4
174
- summary: Generate json-schema from Ruby classes with ActiveModel integration.
182
+ summary: JSON Schema generation and validation for Ruby classes, ideal for LLM function
183
+ calling.
175
184
  test_files: []