rapitapir 0.1.1 → 2.0.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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -7
  3. data/.rubocop_todo.yml +83 -0
  4. data/README.md +1319 -235
  5. data/RUBY_WEEKLY_LAUNCH_POST.md +219 -0
  6. data/docs/RAILS_INTEGRATION_IMPLEMENTATION.md +209 -0
  7. data/docs/SINATRA_EXTENSION.md +399 -348
  8. data/docs/STRICT_VALIDATION.md +229 -0
  9. data/docs/VALIDATION_IMPROVEMENTS.md +218 -0
  10. data/docs/ai-integration-plan.md +112 -0
  11. data/docs/auto-derivation.md +505 -92
  12. data/docs/endpoint-definition.md +536 -129
  13. data/docs/n8n-integration.md +212 -0
  14. data/docs/observability.md +810 -500
  15. data/docs/using-mcp.md +93 -0
  16. data/examples/ai/knowledge_base_rag.rb +83 -0
  17. data/examples/ai/user_management_mcp.rb +92 -0
  18. data/examples/ai/user_validation_llm.rb +187 -0
  19. data/examples/rails/RAILS_8_GUIDE.md +165 -0
  20. data/examples/rails/RAILS_LOADING_FIX.rb +35 -0
  21. data/examples/rails/README.md +497 -0
  22. data/examples/rails/comprehensive_test.rb +91 -0
  23. data/examples/rails/config/routes.rb +48 -0
  24. data/examples/rails/debug_controller.rb +63 -0
  25. data/examples/rails/detailed_test.rb +46 -0
  26. data/examples/rails/enhanced_users_controller.rb +278 -0
  27. data/examples/rails/final_server_test.rb +50 -0
  28. data/examples/rails/hello_world_app.rb +116 -0
  29. data/examples/rails/hello_world_controller.rb +186 -0
  30. data/examples/rails/hello_world_routes.rb +28 -0
  31. data/examples/rails/rails8_minimal_demo.rb +132 -0
  32. data/examples/rails/rails8_simple_demo.rb +140 -0
  33. data/examples/rails/rails8_working_demo.rb +255 -0
  34. data/examples/rails/real_world_blog_api.rb +510 -0
  35. data/examples/rails/server_test.rb +46 -0
  36. data/examples/rails/test_direct_processing.rb +41 -0
  37. data/examples/rails/test_hello_world.rb +80 -0
  38. data/examples/rails/test_rails_integration.rb +54 -0
  39. data/examples/rails/traditional_app/Gemfile +37 -0
  40. data/examples/rails/traditional_app/README.md +265 -0
  41. data/examples/rails/traditional_app/app/controllers/api/v1/posts_controller.rb +254 -0
  42. data/examples/rails/traditional_app/app/controllers/api/v1/users_controller.rb +220 -0
  43. data/examples/rails/traditional_app/app/controllers/application_controller.rb +86 -0
  44. data/examples/rails/traditional_app/app/controllers/application_controller_simplified.rb +87 -0
  45. data/examples/rails/traditional_app/app/controllers/documentation_controller.rb +149 -0
  46. data/examples/rails/traditional_app/app/controllers/health_controller.rb +42 -0
  47. data/examples/rails/traditional_app/config/routes.rb +25 -0
  48. data/examples/rails/traditional_app/config/routes_best_practice.rb +25 -0
  49. data/examples/rails/traditional_app/config/routes_simplified.rb +36 -0
  50. data/examples/rails/traditional_app_runnable.rb +406 -0
  51. data/examples/rails/users_controller.rb +4 -1
  52. data/examples/serverless/Gemfile +43 -0
  53. data/examples/serverless/QUICKSTART.md +331 -0
  54. data/examples/serverless/README.md +520 -0
  55. data/examples/serverless/aws_lambda_example.rb +307 -0
  56. data/examples/serverless/aws_sam_template.yaml +215 -0
  57. data/examples/serverless/azure_functions_example.rb +407 -0
  58. data/examples/serverless/deploy.rb +204 -0
  59. data/examples/serverless/gcp_cloud_functions_example.rb +367 -0
  60. data/examples/serverless/gcp_function.yaml +23 -0
  61. data/examples/serverless/host.json +24 -0
  62. data/examples/serverless/package.json +32 -0
  63. data/examples/serverless/spec/aws_lambda_spec.rb +196 -0
  64. data/examples/serverless/spec/spec_helper.rb +89 -0
  65. data/examples/serverless/vercel.json +31 -0
  66. data/examples/serverless/vercel_example.rb +404 -0
  67. data/examples/strict_validation_examples.rb +104 -0
  68. data/examples/validation_error_examples.rb +173 -0
  69. data/lib/rapitapir/ai/llm_instruction.rb +456 -0
  70. data/lib/rapitapir/ai/mcp.rb +134 -0
  71. data/lib/rapitapir/ai/rag.rb +287 -0
  72. data/lib/rapitapir/ai/rag_middleware.rb +147 -0
  73. data/lib/rapitapir/auth/oauth2.rb +43 -57
  74. data/lib/rapitapir/cli/command.rb +362 -2
  75. data/lib/rapitapir/cli/mcp_export.rb +18 -0
  76. data/lib/rapitapir/cli/validator.rb +2 -6
  77. data/lib/rapitapir/core/endpoint.rb +59 -6
  78. data/lib/rapitapir/core/enhanced_endpoint.rb +2 -6
  79. data/lib/rapitapir/dsl/fluent_endpoint_builder.rb +53 -0
  80. data/lib/rapitapir/endpoint_registry.rb +47 -0
  81. data/lib/rapitapir/observability/health_check.rb +4 -4
  82. data/lib/rapitapir/observability/logging.rb +10 -10
  83. data/lib/rapitapir/schema.rb +2 -2
  84. data/lib/rapitapir/server/rack_adapter.rb +1 -3
  85. data/lib/rapitapir/server/rails/configuration.rb +77 -0
  86. data/lib/rapitapir/server/rails/controller_base.rb +185 -0
  87. data/lib/rapitapir/server/rails/documentation_helpers.rb +76 -0
  88. data/lib/rapitapir/server/rails/resource_builder.rb +181 -0
  89. data/lib/rapitapir/server/rails/routes.rb +114 -0
  90. data/lib/rapitapir/server/rails_adapter.rb +10 -3
  91. data/lib/rapitapir/server/rails_adapter_class.rb +1 -3
  92. data/lib/rapitapir/server/rails_controller.rb +1 -3
  93. data/lib/rapitapir/server/rails_integration.rb +67 -0
  94. data/lib/rapitapir/server/rails_response_handler.rb +16 -3
  95. data/lib/rapitapir/server/sinatra_adapter.rb +29 -5
  96. data/lib/rapitapir/server/sinatra_integration.rb +4 -4
  97. data/lib/rapitapir/sinatra/extension.rb +2 -2
  98. data/lib/rapitapir/sinatra/oauth2_helpers.rb +34 -40
  99. data/lib/rapitapir/types/array.rb +4 -0
  100. data/lib/rapitapir/types/auto_derivation.rb +4 -18
  101. data/lib/rapitapir/types/datetime.rb +1 -3
  102. data/lib/rapitapir/types/float.rb +2 -6
  103. data/lib/rapitapir/types/hash.rb +40 -2
  104. data/lib/rapitapir/types/integer.rb +4 -12
  105. data/lib/rapitapir/types/object.rb +6 -2
  106. data/lib/rapitapir/types.rb +6 -2
  107. data/lib/rapitapir/version.rb +1 -1
  108. data/lib/rapitapir.rb +5 -3
  109. data/rapitapir.gemspec +7 -5
  110. metadata +116 -16
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapitapir
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Riccardo Merolla
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-08-04 00:00:00.000000000 Z
11
+ date: 2025-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -28,22 +28,36 @@ dependencies:
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '4.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
34
41
  - - ">="
35
42
  - !ruby/object:Gem::Version
36
43
  version: '2.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '4.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: webrick
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1.7'
37
54
  type: :runtime
38
55
  prerelease: false
39
56
  version_requirements: !ruby/object:Gem::Requirement
40
57
  requirements:
41
58
  - - "~>"
42
59
  - !ruby/object:Gem::Version
43
- version: '2.0'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '2.0'
60
+ version: '1.7'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: sinatra
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +67,7 @@ dependencies:
53
67
  version: '2.0'
54
68
  - - "<"
55
69
  - !ruby/object:Gem::Version
56
- version: '4.0'
70
+ version: '5.0'
57
71
  type: :runtime
58
72
  prerelease: false
59
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,35 +77,49 @@ dependencies:
63
77
  version: '2.0'
64
78
  - - "<"
65
79
  - !ruby/object:Gem::Version
66
- version: '4.0'
80
+ version: '5.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: puma
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '6.0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '6.0'
67
95
  - !ruby/object:Gem::Dependency
68
96
  name: rack-test
69
97
  requirement: !ruby/object:Gem::Requirement
70
98
  requirements:
71
99
  - - "~>"
72
100
  - !ruby/object:Gem::Version
73
- version: '2.0'
101
+ version: '2.1'
74
102
  type: :development
75
103
  prerelease: false
76
104
  version_requirements: !ruby/object:Gem::Requirement
77
105
  requirements:
78
106
  - - "~>"
79
107
  - !ruby/object:Gem::Version
80
- version: '2.0'
108
+ version: '2.1'
81
109
  - !ruby/object:Gem::Dependency
82
110
  name: rspec
83
111
  requirement: !ruby/object:Gem::Requirement
84
112
  requirements:
85
113
  - - "~>"
86
114
  - !ruby/object:Gem::Version
87
- version: '3.12'
115
+ version: '3.13'
88
116
  type: :development
89
117
  prerelease: false
90
118
  version_requirements: !ruby/object:Gem::Requirement
91
119
  requirements:
92
120
  - - "~>"
93
121
  - !ruby/object:Gem::Version
94
- version: '3.12'
122
+ version: '3.13'
95
123
  - !ruby/object:Gem::Dependency
96
124
  name: simplecov
97
125
  requirement: !ruby/object:Gem::Requirement
@@ -107,19 +135,19 @@ dependencies:
107
135
  - !ruby/object:Gem::Version
108
136
  version: '0.22'
109
137
  - !ruby/object:Gem::Dependency
110
- name: webrick
138
+ name: webmock
111
139
  requirement: !ruby/object:Gem::Requirement
112
140
  requirements:
113
141
  - - "~>"
114
142
  - !ruby/object:Gem::Version
115
- version: '1.8'
143
+ version: '3.19'
116
144
  type: :development
117
145
  prerelease: false
118
146
  version_requirements: !ruby/object:Gem::Requirement
119
147
  requirements:
120
148
  - - "~>"
121
149
  - !ruby/object:Gem::Version
122
- version: '1.8'
150
+ version: '3.19'
123
151
  - !ruby/object:Gem::Dependency
124
152
  name: redcarpet
125
153
  requirement: !ruby/object:Gem::Requirement
@@ -202,14 +230,20 @@ extra_rdoc_files: []
202
230
  files:
203
231
  - ".rspec"
204
232
  - ".rubocop.yml"
233
+ - ".rubocop_todo.yml"
205
234
  - CHANGELOG.md
206
235
  - CLEANUP_SUMMARY.md
207
236
  - CONTRIBUTING.md
208
237
  - LICENSE
209
238
  - README.md
239
+ - RUBY_WEEKLY_LAUNCH_POST.md
210
240
  - debug_hash.rb
211
241
  - docs/EXTENSION_COMPARISON.md
242
+ - docs/RAILS_INTEGRATION_IMPLEMENTATION.md
212
243
  - docs/SINATRA_EXTENSION.md
244
+ - docs/STRICT_VALIDATION.md
245
+ - docs/VALIDATION_IMPROVEMENTS.md
246
+ - docs/ai-integration-plan.md
213
247
  - docs/archive/PHASE_1_2_COMPLETE.md
214
248
  - docs/archive/PHASE_1_3_COMPLETE.md
215
249
  - docs/archive/PHASE_2_1_OBSERVABILITY_COMPLETED.md
@@ -225,11 +259,16 @@ files:
225
259
  - docs/github_pages_fix.md
226
260
  - docs/github_pages_setup.md
227
261
  - docs/implementation-status.md
262
+ - docs/n8n-integration.md
228
263
  - docs/observability.md
229
264
  - docs/phase3-plan.md
230
265
  - docs/sinatra_rapitapir.md
231
266
  - docs/type_shortcuts.md
267
+ - docs/using-mcp.md
232
268
  - examples/README_ENTERPRISE.md
269
+ - examples/ai/knowledge_base_rag.rb
270
+ - examples/ai/user_management_mcp.rb
271
+ - examples/ai/user_validation_llm.rb
233
272
  - examples/authentication_example.rb
234
273
  - examples/auto_derivation_ruby_friendly.rb
235
274
  - examples/cli/user_api_endpoints.rb
@@ -269,17 +308,70 @@ files:
269
308
  - examples/observability/test_working_validation.rb
270
309
  - examples/openapi/user_api_schema.rb
271
310
  - examples/production_ready_example.rb
311
+ - examples/rails/RAILS_8_GUIDE.md
312
+ - examples/rails/RAILS_LOADING_FIX.rb
313
+ - examples/rails/README.md
314
+ - examples/rails/comprehensive_test.rb
315
+ - examples/rails/config/routes.rb
316
+ - examples/rails/debug_controller.rb
317
+ - examples/rails/detailed_test.rb
318
+ - examples/rails/enhanced_users_controller.rb
319
+ - examples/rails/final_server_test.rb
320
+ - examples/rails/hello_world_app.rb
321
+ - examples/rails/hello_world_controller.rb
322
+ - examples/rails/hello_world_routes.rb
323
+ - examples/rails/rails8_minimal_demo.rb
324
+ - examples/rails/rails8_simple_demo.rb
325
+ - examples/rails/rails8_working_demo.rb
326
+ - examples/rails/real_world_blog_api.rb
327
+ - examples/rails/server_test.rb
328
+ - examples/rails/test_direct_processing.rb
329
+ - examples/rails/test_hello_world.rb
330
+ - examples/rails/test_rails_integration.rb
331
+ - examples/rails/traditional_app/Gemfile
332
+ - examples/rails/traditional_app/README.md
333
+ - examples/rails/traditional_app/app/controllers/api/v1/posts_controller.rb
334
+ - examples/rails/traditional_app/app/controllers/api/v1/users_controller.rb
335
+ - examples/rails/traditional_app/app/controllers/application_controller.rb
336
+ - examples/rails/traditional_app/app/controllers/application_controller_simplified.rb
337
+ - examples/rails/traditional_app/app/controllers/documentation_controller.rb
338
+ - examples/rails/traditional_app/app/controllers/health_controller.rb
339
+ - examples/rails/traditional_app/config/routes.rb
340
+ - examples/rails/traditional_app/config/routes_best_practice.rb
341
+ - examples/rails/traditional_app/config/routes_simplified.rb
342
+ - examples/rails/traditional_app_runnable.rb
272
343
  - examples/rails/users_controller.rb
273
344
  - examples/readme/basic_sinatra_example.rb
274
345
  - examples/server/user_api.rb
346
+ - examples/serverless/Gemfile
347
+ - examples/serverless/QUICKSTART.md
348
+ - examples/serverless/README.md
349
+ - examples/serverless/aws_lambda_example.rb
350
+ - examples/serverless/aws_sam_template.yaml
351
+ - examples/serverless/azure_functions_example.rb
352
+ - examples/serverless/deploy.rb
353
+ - examples/serverless/gcp_cloud_functions_example.rb
354
+ - examples/serverless/gcp_function.yaml
355
+ - examples/serverless/host.json
356
+ - examples/serverless/package.json
357
+ - examples/serverless/spec/aws_lambda_spec.rb
358
+ - examples/serverless/spec/spec_helper.rb
359
+ - examples/serverless/vercel.json
360
+ - examples/serverless/vercel_example.rb
275
361
  - examples/simple_auto_derivation_demo.rb
276
362
  - examples/simple_demo_api.rb
277
363
  - examples/sinatra/user_app.rb
364
+ - examples/strict_validation_examples.rb
278
365
  - examples/t_shortcut_demo.rb
279
366
  - examples/user_api.rb
367
+ - examples/validation_error_examples.rb
280
368
  - examples/working_getting_started.rb
281
369
  - examples/working_simple_example.rb
282
370
  - lib/rapitapir.rb
371
+ - lib/rapitapir/ai/llm_instruction.rb
372
+ - lib/rapitapir/ai/mcp.rb
373
+ - lib/rapitapir/ai/rag.rb
374
+ - lib/rapitapir/ai/rag_middleware.rb
283
375
  - lib/rapitapir/auth.rb
284
376
  - lib/rapitapir/auth/configuration.rb
285
377
  - lib/rapitapir/auth/context.rb
@@ -288,6 +380,7 @@ files:
288
380
  - lib/rapitapir/auth/oauth2.rb
289
381
  - lib/rapitapir/auth/schemes.rb
290
382
  - lib/rapitapir/cli/command.rb
383
+ - lib/rapitapir/cli/mcp_export.rb
291
384
  - lib/rapitapir/cli/server.rb
292
385
  - lib/rapitapir/cli/validator.rb
293
386
  - lib/rapitapir/client/generator_base.rb
@@ -312,6 +405,7 @@ files:
312
405
  - lib/rapitapir/dsl/observability_methods.rb
313
406
  - lib/rapitapir/dsl/output_methods.rb
314
407
  - lib/rapitapir/dsl/type_resolution.rb
408
+ - lib/rapitapir/endpoint_registry.rb
315
409
  - lib/rapitapir/observability.rb
316
410
  - lib/rapitapir/observability/configuration.rb
317
411
  - lib/rapitapir/observability/health_check.rb
@@ -325,10 +419,16 @@ files:
325
419
  - lib/rapitapir/server/middleware.rb
326
420
  - lib/rapitapir/server/path_matcher.rb
327
421
  - lib/rapitapir/server/rack_adapter.rb
422
+ - lib/rapitapir/server/rails/configuration.rb
423
+ - lib/rapitapir/server/rails/controller_base.rb
424
+ - lib/rapitapir/server/rails/documentation_helpers.rb
425
+ - lib/rapitapir/server/rails/resource_builder.rb
426
+ - lib/rapitapir/server/rails/routes.rb
328
427
  - lib/rapitapir/server/rails_adapter.rb
329
428
  - lib/rapitapir/server/rails_adapter_class.rb
330
429
  - lib/rapitapir/server/rails_controller.rb
331
430
  - lib/rapitapir/server/rails_input_processor.rb
431
+ - lib/rapitapir/server/rails_integration.rb
332
432
  - lib/rapitapir/server/rails_response_handler.rb
333
433
  - lib/rapitapir/server/sinatra_adapter.rb
334
434
  - lib/rapitapir/server/sinatra_integration.rb