desiru 0.1.0 → 0.2.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/.claude/settings.local.json +11 -0
  3. data/.env.example +34 -0
  4. data/.rubocop.yml +7 -4
  5. data/.ruby-version +1 -0
  6. data/CHANGELOG.md +73 -0
  7. data/CLAUDE.local.md +3 -0
  8. data/CLAUDE.md +10 -1
  9. data/Gemfile +21 -2
  10. data/Gemfile.lock +88 -13
  11. data/README.md +301 -2
  12. data/Rakefile +1 -0
  13. data/db/migrations/001_create_initial_tables.rb +96 -0
  14. data/db/migrations/002_create_job_results.rb +39 -0
  15. data/desiru-development-swarm.yml +185 -0
  16. data/desiru.db +0 -0
  17. data/desiru.gemspec +2 -5
  18. data/docs/background_processing_roadmap.md +87 -0
  19. data/docs/job_scheduling.md +167 -0
  20. data/dspy-analysis-swarm.yml +60 -0
  21. data/dspy-feature-analysis.md +121 -0
  22. data/examples/README.md +69 -0
  23. data/examples/api_with_persistence.rb +122 -0
  24. data/examples/assertions_example.rb +232 -0
  25. data/examples/async_processing.rb +2 -0
  26. data/examples/few_shot_learning.rb +1 -2
  27. data/examples/graphql_api.rb +4 -2
  28. data/examples/graphql_integration.rb +3 -3
  29. data/examples/graphql_optimization_summary.md +143 -0
  30. data/examples/graphql_performance_benchmark.rb +247 -0
  31. data/examples/persistence_example.rb +102 -0
  32. data/examples/react_agent.rb +203 -0
  33. data/examples/rest_api.rb +173 -0
  34. data/examples/rest_api_advanced.rb +333 -0
  35. data/examples/scheduled_job_example.rb +116 -0
  36. data/examples/simple_qa.rb +1 -2
  37. data/examples/sinatra_api.rb +109 -0
  38. data/examples/typed_signatures.rb +1 -2
  39. data/graphql_optimization_summary.md +53 -0
  40. data/lib/desiru/api/grape_integration.rb +284 -0
  41. data/lib/desiru/api/persistence_middleware.rb +148 -0
  42. data/lib/desiru/api/sinatra_integration.rb +217 -0
  43. data/lib/desiru/api.rb +42 -0
  44. data/lib/desiru/assertions.rb +74 -0
  45. data/lib/desiru/async_status.rb +65 -0
  46. data/lib/desiru/cache.rb +1 -1
  47. data/lib/desiru/configuration.rb +2 -1
  48. data/lib/desiru/core/compiler.rb +231 -0
  49. data/lib/desiru/core/example.rb +96 -0
  50. data/lib/desiru/core/prediction.rb +108 -0
  51. data/lib/desiru/core/trace.rb +330 -0
  52. data/lib/desiru/core/traceable.rb +61 -0
  53. data/lib/desiru/core.rb +12 -0
  54. data/lib/desiru/errors.rb +160 -0
  55. data/lib/desiru/field.rb +17 -14
  56. data/lib/desiru/graphql/batch_loader.rb +85 -0
  57. data/lib/desiru/graphql/data_loader.rb +242 -75
  58. data/lib/desiru/graphql/enum_builder.rb +75 -0
  59. data/lib/desiru/graphql/executor.rb +37 -4
  60. data/lib/desiru/graphql/schema_generator.rb +62 -158
  61. data/lib/desiru/graphql/type_builder.rb +138 -0
  62. data/lib/desiru/graphql/type_cache_warmer.rb +91 -0
  63. data/lib/desiru/jobs/async_predict.rb +1 -1
  64. data/lib/desiru/jobs/base.rb +67 -0
  65. data/lib/desiru/jobs/batch_processor.rb +6 -6
  66. data/lib/desiru/jobs/retriable.rb +119 -0
  67. data/lib/desiru/jobs/retry_strategies.rb +169 -0
  68. data/lib/desiru/jobs/scheduler.rb +219 -0
  69. data/lib/desiru/jobs/webhook_notifier.rb +242 -0
  70. data/lib/desiru/models/anthropic.rb +164 -0
  71. data/lib/desiru/models/base.rb +37 -3
  72. data/lib/desiru/models/open_ai.rb +151 -0
  73. data/lib/desiru/models/open_router.rb +161 -0
  74. data/lib/desiru/module.rb +67 -9
  75. data/lib/desiru/modules/best_of_n.rb +306 -0
  76. data/lib/desiru/modules/chain_of_thought.rb +3 -3
  77. data/lib/desiru/modules/majority.rb +51 -0
  78. data/lib/desiru/modules/multi_chain_comparison.rb +256 -0
  79. data/lib/desiru/modules/predict.rb +15 -1
  80. data/lib/desiru/modules/program_of_thought.rb +338 -0
  81. data/lib/desiru/modules/react.rb +273 -0
  82. data/lib/desiru/modules/retrieve.rb +4 -2
  83. data/lib/desiru/optimizers/base.rb +32 -4
  84. data/lib/desiru/optimizers/bootstrap_few_shot.rb +2 -2
  85. data/lib/desiru/optimizers/copro.rb +268 -0
  86. data/lib/desiru/optimizers/knn_few_shot.rb +185 -0
  87. data/lib/desiru/optimizers/mipro_v2.rb +889 -0
  88. data/lib/desiru/persistence/database.rb +71 -0
  89. data/lib/desiru/persistence/models/api_request.rb +38 -0
  90. data/lib/desiru/persistence/models/job_result.rb +138 -0
  91. data/lib/desiru/persistence/models/module_execution.rb +37 -0
  92. data/lib/desiru/persistence/models/optimization_result.rb +28 -0
  93. data/lib/desiru/persistence/models/training_example.rb +25 -0
  94. data/lib/desiru/persistence/models.rb +11 -0
  95. data/lib/desiru/persistence/repositories/api_request_repository.rb +98 -0
  96. data/lib/desiru/persistence/repositories/base_repository.rb +77 -0
  97. data/lib/desiru/persistence/repositories/job_result_repository.rb +116 -0
  98. data/lib/desiru/persistence/repositories/module_execution_repository.rb +85 -0
  99. data/lib/desiru/persistence/repositories/optimization_result_repository.rb +67 -0
  100. data/lib/desiru/persistence/repositories/training_example_repository.rb +102 -0
  101. data/lib/desiru/persistence/repository.rb +29 -0
  102. data/lib/desiru/persistence/setup.rb +77 -0
  103. data/lib/desiru/persistence.rb +49 -0
  104. data/lib/desiru/registry.rb +3 -5
  105. data/lib/desiru/signature.rb +91 -24
  106. data/lib/desiru/version.rb +1 -1
  107. data/lib/desiru.rb +33 -8
  108. data/missing-features-analysis.md +192 -0
  109. metadata +75 -45
  110. data/lib/desiru/models/raix_adapter.rb +0 -210
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 483d9107e403dc8c29d5b3621ca65876eaf4b4fb19fadd5b59bc39a12b005e5f
4
- data.tar.gz: 58b101dc3f69a6c215a6edda23b4895eaa92007dcf2fbe3710705349c8e48f78
3
+ metadata.gz: dba6d3f283255824630ae2a8fd4119dfcdb7480f1aa8d50e57aa8c8d740128ce
4
+ data.tar.gz: 26b4a53f8be0de54d4619c7ae7ba85fb868009c3b7407b7f5730b2cdc8b8277d
5
5
  SHA512:
6
- metadata.gz: d1c90f98e10e42dc1bd59631bb5498c35368a46c4db01bb62fafadeb8cb36f4977d2e58ef1af8b23242428047fc10ea1b9edb3cfe2f139173c0405e22040ee74
7
- data.tar.gz: b2060d56c756f30218ab977a0c45d59294d231c5d7b179cadb19483a2af144537e45b40d8f57821f045f23b0e5072ec2086e69bb8e2e04a03f13210d0c6e6494
6
+ metadata.gz: 4be0c144f72095e40bb49060797ebf2e790d053f17bdb773c4e41bf0bd84f9706f4fff91981ea3bba89535afc2b152ca06e79ad11ac5a74d82912055b115d702
7
+ data.tar.gz: '08db2c001e9dda2c0f1cb934fcd2826f75290324edf7707e898f2ed18a57b675c4d2c50b7592ce3aa0b7d2506cbb8c704b3edb15accc0fbac44ab917abb76180'
@@ -0,0 +1,11 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "WebFetch(domain:github.com)",
5
+ "Bash(gh repo view:*)",
6
+ "Bash(gh issue list:*)",
7
+ "Bash(claude-swarm:*)"
8
+ ],
9
+ "deny": []
10
+ }
11
+ }
data/.env.example ADDED
@@ -0,0 +1,34 @@
1
+ # Desiru Configuration Example
2
+ # Copy this file to .env and add your actual API keys
3
+
4
+ # Choose one of the following LLM providers:
5
+
6
+ # Anthropic Claude
7
+ # Get your API key from: https://console.anthropic.com/
8
+ # ANTHROPIC_API_KEY=sk-ant-api03-...
9
+
10
+ # OpenAI
11
+ # Get your API key from: https://platform.openai.com/api-keys
12
+ # OPENAI_API_KEY=sk-...
13
+
14
+ # Optional: Redis configuration for async/caching features
15
+ # Default: redis://localhost:6379/0
16
+ # REDIS_URL=redis://localhost:6379/0
17
+
18
+ # Optional: Database URL for persistence features
19
+ # Default: sqlite://db/desiru_development.db
20
+ # DATABASE_URL=sqlite://db/desiru_development.db
21
+
22
+ # Optional: OpenRouter API
23
+ # Get your API key from: https://openrouter.ai/keys
24
+ # OPENROUTER_API_KEY=sk-or-v1-...
25
+
26
+ # Optional: Default model selection
27
+ # For Anthropic: claude-3-haiku-20240307, claude-3-sonnet-20240229, claude-3-opus-20240229
28
+ # For OpenAI: gpt-4o-mini, gpt-4o, gpt-4-turbo
29
+ # For OpenRouter: anthropic/claude-3-haiku, openai/gpt-4o-mini, google/gemini-pro
30
+ # DESIRU_DEFAULT_MODEL=claude-3-haiku-20240307
31
+
32
+ # Optional: Logging level
33
+ # Options: debug, info, warn, error, fatal
34
+ # DESIRU_LOG_LEVEL=info
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: 3.4
2
+ TargetRubyVersion: 3.3
3
3
  NewCops: enable
4
4
  SuggestExtensions: false
5
5
  Exclude:
@@ -8,9 +8,9 @@ AllCops:
8
8
  - 'bin/**/*'
9
9
  - 'spec/fixtures/**/*'
10
10
 
11
- require:
11
+ plugins:
12
12
  - rubocop-rake
13
- - rubocop-rspec
13
+
14
14
 
15
15
  # Relaxed metrics for DSL-heavy library code
16
16
  Metrics/MethodLength:
@@ -52,4 +52,7 @@ Layout/LineLength:
52
52
  - 'spec/**/*'
53
53
 
54
54
  Gemspec/RequireMFA:
55
- Enabled: false
55
+ Enabled: false
56
+
57
+ Metrics:
58
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.4.2
data/CHANGELOG.md ADDED
@@ -0,0 +1,73 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] - 2025-06-23
9
+
10
+ ### Added
11
+ - **Core Data Containers**: New `Example` and `Prediction` classes for structured data handling in DSPy programs
12
+ - **Trace Collection System**: Complete tracing infrastructure with `TraceCollector` and `Traceable` for execution monitoring and debugging
13
+ - **Compilation Infrastructure**: New `Compiler` and `CompilerBuilder` classes enabling full DSPy program compilation pipeline
14
+ - **ProgramOfThought Module**: Advanced reasoning module that generates and executes code for complex problem solving
15
+ - **MIPROv2 Optimizer**: State-of-the-art Bayesian optimization algorithm for automatic prompt and few-shot example optimization
16
+ - **BestOfN Module**: Multi-sampling module with configurable selection criteria (confidence, consistency, LLM judge, custom)
17
+ - **Comprehensive Integration Tests**: Full test coverage for all new components ensuring reliability and correctness
18
+
19
+ ### Enhanced
20
+ - **Module Architecture**: Improved base module system to support advanced tracing and compilation features
21
+ - **Optimization Pipeline**: Complete optimization workflow from data collection through model improvement
22
+ - **Error Handling**: Robust error recovery and logging throughout the new components
23
+
24
+ ### Technical Improvements
25
+ - **Type Safety**: Enhanced type checking and validation across all new modules
26
+ - **Performance**: Optimized execution paths for compilation and optimization workflows
27
+ - **Extensibility**: Modular architecture enabling easy addition of new optimizers and reasoning modules
28
+
29
+ ## [0.1.1] - 2025-06-21
30
+
31
+ ### Added
32
+ - Direct API client implementations for Anthropic, OpenAI, and OpenRouter
33
+ - New modules: Majority, MultiChainComparison, and ProgramOfThought
34
+ - New optimizers: COPRO and KNNFewShot
35
+ - Enhanced error handling with detailed error classes
36
+ - Support for Ruby 3.3.6 (minimum version now 3.3.0)
37
+ - Interactive console with pre-loaded modules (`bin/console`)
38
+ - Examples runner with model selection (`bin/examples`)
39
+
40
+ ### Changed
41
+ - Replaced Raix dependency with direct API integrations for better control
42
+ - Improved console experience with better error messages and debug helpers
43
+ - Updated default max_tokens from 1000 to 4096 to prevent truncated responses
44
+ - Fixed namespace issues in console by including necessary modules
45
+
46
+ ### Fixed
47
+ - Redis mocking in job tests for CI compatibility
48
+ - Rubocop configuration to match required Ruby version
49
+ - Test failures in CI environment
50
+
51
+ ### Removed
52
+ - Raix gem dependency
53
+ - Support for Ruby 3.2.x (minimum version is now 3.3.0)
54
+
55
+ ## [0.1.0] - 2025-06-12
56
+
57
+ ### Added
58
+ - Initial release of Desiru
59
+ - Core DSPy functionality ported to Ruby
60
+ - Basic modules: Predict, ChainOfThought, ReAct
61
+ - Signature system with type validation
62
+ - Model adapters for OpenAI and Anthropic (via Raix)
63
+ - Optimizers: BootstrapFewShot, MIPROv2
64
+ - REST API integration with Grape and Sinatra
65
+ - GraphQL integration with automatic schema generation
66
+ - Background job processing with Sidekiq
67
+ - Database persistence layer with Sequel
68
+ - Comprehensive test suite
69
+ - Documentation and examples
70
+
71
+ [0.2.0]: https://github.com/obie/desiru/compare/v0.1.1...v0.2.0
72
+ [0.1.1]: https://github.com/obie/desiru/compare/v0.1.0...v0.1.1
73
+ [0.1.0]: https://github.com/obie/desiru/releases/tag/v0.1.0
data/CLAUDE.local.md ADDED
@@ -0,0 +1,3 @@
1
+ ## Development Workflow
2
+
3
+ - ALWAYS run rubocop -A before pushing a new PR update. it's super annoying to have the build break because of the linter
data/CLAUDE.md CHANGED
@@ -17,6 +17,15 @@ This project is in its initial setup phase. When implementing features:
17
17
  - Follow Ruby community conventions for project organization
18
18
  - Set up bundler with a Gemfile when adding dependencies
19
19
 
20
+ ## Testing Framework
21
+
22
+ **IMPORTANT**: This project uses RSpec exclusively for testing. NEVER use Minitest or any other testing framework. Do not add minitest gems, create test/ directories, or write any Minitest-style tests. All tests must be written in RSpec format and placed in the spec/ directory.
23
+
20
24
  ## Workflow Guidance
21
25
 
22
- - For maximum efficiency, whenever you need to perform multiple independent operations, invoke all relevant tools simultaneously rather than sequentially.
26
+ - For maximum efficiency, whenever you need to perform multiple independent operations, invoke all relevant tools simultaneously rather than sequentially.
27
+ - When you're tempted to respond and return control to me with a message like "The codebase is now in excellent shape with 859 passing tests, 1 failing test, and 5 pending tests. The project is ready for the v0.2.0 release once the team decides how to handle the final test (either fix it or mark it as pending)." then instead, you should invoke the team to go ahead and decide how to handle the final test.
28
+
29
+ ## Release Guidance
30
+
31
+ - Note that releases are never ready if there are any tests failing in the test suites. Never tell me that a release is ready unless we have a clean build.
data/Gemfile CHANGED
@@ -2,35 +2,54 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- ruby '~> 3.4.2'
5
+ ruby '>= 3.2.0'
6
6
 
7
7
  # Specify your gem's dependencies in desiru.gemspec
8
8
  gemspec
9
9
 
10
10
  group :development, :test do
11
+ gem 'dotenv', '~> 3.0'
12
+ gem 'mock_redis', '~> 0.40'
11
13
  gem 'pry', '~> 0.14'
12
14
  gem 'pry-byebug', '~> 3.10'
15
+ gem 'rack-test', '~> 2.0'
13
16
  gem 'rake', '~> 13.0'
17
+ gem 'rdoc'
14
18
  gem 'rspec', '~> 3.0'
15
19
  gem 'rubocop', '~> 1.21'
16
20
  gem 'rubocop-rake', '~> 0.6'
17
21
  gem 'rubocop-rspec', '~> 2.0'
18
22
  gem 'simplecov', '~> 0.22', require: false
23
+ gem 'webmock', '~> 3.0'
19
24
  gem 'yard', '~> 0.9'
20
25
  end
21
26
 
22
27
  # LLM interaction dependencies
28
+ gem 'anthropic', '~> 0.3'
23
29
  gem 'faraday', '~> 2.0'
24
30
  gem 'faraday-retry', '~> 2.0'
25
- gem 'raix', '~> 0.4'
31
+ gem 'open_router', '~> 0.3'
32
+ gem 'ruby-openai', '~> 7.0'
26
33
 
27
34
  # GraphQL support
28
35
  gem 'graphql', '~> 2.0'
29
36
 
37
+ # REST API support
38
+ gem 'grape', '~> 2.0'
39
+ gem 'rack-cors', '~> 2.0'
40
+ gem 'sinatra', '~> 3.0'
41
+ gem 'sinatra-contrib', '~> 3.0'
42
+
43
+ # Database support
44
+ gem 'sequel', '~> 5.0'
45
+ gem 'sqlite3', '~> 1.6' # For development/testing
46
+
30
47
  # Optional dependencies for enhanced functionality
31
48
  group :optional do
32
49
  gem 'async', '~> 2.0' # For concurrent operations
33
50
  gem 'dry-struct', '~> 1.0' # For type safety
34
51
  gem 'dry-validation', '~> 1.0' # For validation
52
+ gem 'jwt', '~> 2.0' # For API authentication
53
+ gem 'rack-throttle', '~> 0.7' # For rate limiting
35
54
  gem 'redis', '~> 5.0' # For caching
36
55
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- desiru (0.1.0)
4
+ desiru (0.2.0)
5
5
  forwardable (~> 1.3)
6
6
  redis (~> 5.0)
7
7
  sidekiq (~> 7.2)
@@ -23,6 +23,12 @@ GEM
23
23
  securerandom (>= 0.3)
24
24
  tzinfo (~> 2.0, >= 2.0.5)
25
25
  uri (>= 0.13.1)
26
+ addressable (2.8.7)
27
+ public_suffix (>= 2.0.2, < 7.0)
28
+ anthropic (0.4.1)
29
+ event_stream_parser (>= 0.3.0, < 2.0.0)
30
+ faraday (>= 1)
31
+ faraday-multipart (>= 1)
26
32
  ast (2.4.3)
27
33
  async (2.25.0)
28
34
  console (~> 1.29)
@@ -41,6 +47,10 @@ GEM
41
47
  fiber-annotation
42
48
  fiber-local (~> 1.1)
43
49
  json
50
+ crack (1.0.0)
51
+ bigdecimal
52
+ rexml
53
+ date (3.4.1)
44
54
  diff-lcs (1.6.2)
45
55
  docile (1.4.1)
46
56
  dotenv (3.1.8)
@@ -85,38 +95,56 @@ GEM
85
95
  dry-initializer (~> 3.2)
86
96
  dry-schema (~> 1.14)
87
97
  zeitwerk (~> 2.6)
98
+ erb (5.0.1)
88
99
  event_stream_parser (1.0.0)
89
100
  faraday (2.13.1)
90
101
  faraday-net_http (>= 2.0, < 3.5)
91
102
  json
92
103
  logger
93
- faraday-multipart (1.1.0)
104
+ faraday-multipart (1.1.1)
94
105
  multipart-post (~> 2.0)
95
106
  faraday-net_http (3.4.1)
96
107
  net-http (>= 0.5.0)
97
- faraday-retry (2.3.1)
108
+ faraday-retry (2.3.2)
98
109
  faraday (~> 2.0)
99
110
  fiber-annotation (0.2.0)
100
111
  fiber-local (1.1.0)
101
112
  fiber-storage
102
113
  fiber-storage (1.0.1)
103
114
  forwardable (1.3.3)
115
+ grape (2.4.0)
116
+ activesupport (>= 6.1)
117
+ dry-types (>= 1.1)
118
+ mustermann-grape (~> 1.1.0)
119
+ rack (>= 2)
120
+ zeitwerk
104
121
  graphql (2.5.9)
105
122
  base64
106
123
  fiber-storage
107
124
  logger
125
+ hashdiff (1.2.0)
108
126
  i18n (1.14.7)
109
127
  concurrent-ruby (~> 1.0)
110
128
  ice_nine (0.11.2)
111
129
  io-event (1.11.0)
112
130
  json (2.12.2)
131
+ jwt (2.10.1)
132
+ base64
113
133
  language_server-protocol (3.17.0.5)
114
134
  lint_roller (1.1.0)
115
135
  logger (1.7.0)
116
136
  method_source (1.1.0)
117
137
  metrics (0.12.2)
138
+ mini_portile2 (2.8.9)
118
139
  minitest (5.25.5)
140
+ mock_redis (0.50.0)
141
+ redis (~> 5)
142
+ multi_json (1.15.0)
119
143
  multipart-post (2.4.1)
144
+ mustermann (3.0.3)
145
+ ruby2_keywords (~> 0.0.1)
146
+ mustermann-grape (1.1.0)
147
+ mustermann (>= 1.0.0)
120
148
  net-http (0.6.0)
121
149
  uri
122
150
  open_router (0.3.3)
@@ -124,7 +152,6 @@ GEM
124
152
  dotenv (>= 2)
125
153
  faraday (>= 1)
126
154
  faraday-multipart (>= 1)
127
- ostruct (0.6.1)
128
155
  parallel (1.27.0)
129
156
  parser (3.3.8.0)
130
157
  ast (~> 2.4.1)
@@ -136,21 +163,33 @@ GEM
136
163
  pry-byebug (3.11.0)
137
164
  byebug (~> 12.0)
138
165
  pry (>= 0.13, < 0.16)
166
+ psych (5.2.6)
167
+ date
168
+ stringio
169
+ public_suffix (6.0.2)
139
170
  racc (1.8.1)
140
- rack (3.1.16)
171
+ rack (2.2.17)
172
+ rack-cors (2.0.2)
173
+ rack (>= 2.0.0)
174
+ rack-protection (3.2.0)
175
+ base64 (>= 0.1.0)
176
+ rack (~> 2.2, >= 2.2.4)
177
+ rack-test (2.2.0)
178
+ rack (>= 1.3)
179
+ rack-throttle (0.7.1)
180
+ bundler (>= 1.0.0)
181
+ rack (>= 1.0.0)
141
182
  rainbow (3.1.1)
142
- raix (0.9.2)
143
- activesupport (>= 6.0)
144
- faraday-retry (~> 2.0)
145
- open_router (~> 0.2)
146
- ostruct
147
- ruby-openai (~> 7)
148
183
  rake (13.3.0)
184
+ rdoc (6.14.1)
185
+ erb
186
+ psych (>= 4.0.0)
149
187
  redis (5.4.0)
150
188
  redis-client (>= 0.22.0)
151
189
  redis-client (0.25.0)
152
190
  connection_pool
153
191
  regexp_parser (2.10.0)
192
+ rexml (3.4.1)
154
193
  rspec (3.13.1)
155
194
  rspec-core (~> 3.13.0)
156
195
  rspec-expectations (~> 3.13.0)
@@ -199,7 +238,10 @@ GEM
199
238
  faraday (>= 1)
200
239
  faraday-multipart (>= 1)
201
240
  ruby-progressbar (1.13.0)
241
+ ruby2_keywords (0.0.5)
202
242
  securerandom (0.4.1)
243
+ sequel (5.93.0)
244
+ bigdecimal
203
245
  sidekiq (7.3.9)
204
246
  base64
205
247
  connection_pool (>= 2.3.0)
@@ -212,7 +254,22 @@ GEM
212
254
  simplecov_json_formatter (~> 0.1)
213
255
  simplecov-html (0.13.1)
214
256
  simplecov_json_formatter (0.1.4)
257
+ sinatra (3.2.0)
258
+ mustermann (~> 3.0)
259
+ rack (~> 2.2, >= 2.2.4)
260
+ rack-protection (= 3.2.0)
261
+ tilt (~> 2.0)
262
+ sinatra-contrib (3.2.0)
263
+ multi_json (>= 0.0.2)
264
+ mustermann (~> 3.0)
265
+ rack-protection (= 3.2.0)
266
+ sinatra (= 3.2.0)
267
+ tilt (~> 2.0)
215
268
  singleton (0.3.0)
269
+ sqlite3 (1.7.3)
270
+ mini_portile2 (~> 2.8.0)
271
+ stringio (3.1.7)
272
+ tilt (2.6.0)
216
273
  traces (0.15.2)
217
274
  tzinfo (2.0.6)
218
275
  concurrent-ruby (~> 1.0)
@@ -220,6 +277,10 @@ GEM
220
277
  unicode-emoji (~> 4.0, >= 4.0.4)
221
278
  unicode-emoji (4.0.4)
222
279
  uri (1.0.3)
280
+ webmock (3.25.1)
281
+ addressable (>= 2.8.0)
282
+ crack (>= 0.3.2)
283
+ hashdiff (>= 0.4.0, < 2.0.0)
223
284
  yard (0.9.37)
224
285
  zeitwerk (2.7.3)
225
286
 
@@ -228,24 +289,38 @@ PLATFORMS
228
289
  ruby
229
290
 
230
291
  DEPENDENCIES
292
+ anthropic (~> 0.3)
231
293
  async (~> 2.0)
232
- bundler (~> 2.0)
233
294
  desiru!
295
+ dotenv (~> 3.0)
234
296
  dry-struct (~> 1.0)
235
297
  dry-validation (~> 1.0)
236
298
  faraday (~> 2.0)
237
299
  faraday-retry (~> 2.0)
300
+ grape (~> 2.0)
238
301
  graphql (~> 2.0)
302
+ jwt (~> 2.0)
303
+ mock_redis (~> 0.40)
304
+ open_router (~> 0.3)
239
305
  pry (~> 0.14)
240
306
  pry-byebug (~> 3.10)
241
- raix (~> 0.4)
307
+ rack-cors (~> 2.0)
308
+ rack-test (~> 2.0)
309
+ rack-throttle (~> 0.7)
242
310
  rake (~> 13.0)
311
+ rdoc
243
312
  redis (~> 5.0)
244
313
  rspec (~> 3.0)
245
314
  rubocop (~> 1.21)
246
315
  rubocop-rake (~> 0.6)
247
316
  rubocop-rspec (~> 2.0)
317
+ ruby-openai (~> 7.0)
318
+ sequel (~> 5.0)
248
319
  simplecov (~> 0.22)
320
+ sinatra (~> 3.0)
321
+ sinatra-contrib (~> 3.0)
322
+ sqlite3 (~> 1.6)
323
+ webmock (~> 3.0)
249
324
  yard (~> 0.9)
250
325
 
251
326
  RUBY VERSION