language-operator 0.0.1 → 0.1.30

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 (116) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +125 -0
  3. data/CHANGELOG.md +53 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +284 -0
  6. data/LICENSE +229 -21
  7. data/Makefile +77 -0
  8. data/README.md +3 -11
  9. data/Rakefile +34 -0
  10. data/bin/aictl +7 -0
  11. data/completions/_aictl +232 -0
  12. data/completions/aictl.bash +121 -0
  13. data/completions/aictl.fish +114 -0
  14. data/docs/architecture/agent-runtime.md +585 -0
  15. data/docs/dsl/agent-reference.md +591 -0
  16. data/docs/dsl/best-practices.md +1078 -0
  17. data/docs/dsl/chat-endpoints.md +895 -0
  18. data/docs/dsl/constraints.md +671 -0
  19. data/docs/dsl/mcp-integration.md +1177 -0
  20. data/docs/dsl/webhooks.md +932 -0
  21. data/docs/dsl/workflows.md +744 -0
  22. data/examples/README.md +569 -0
  23. data/examples/agent_example.rb +86 -0
  24. data/examples/chat_endpoint_agent.rb +118 -0
  25. data/examples/github_webhook_agent.rb +171 -0
  26. data/examples/mcp_agent.rb +158 -0
  27. data/examples/oauth_callback_agent.rb +296 -0
  28. data/examples/stripe_webhook_agent.rb +219 -0
  29. data/examples/webhook_agent.rb +80 -0
  30. data/lib/language_operator/agent/base.rb +110 -0
  31. data/lib/language_operator/agent/executor.rb +440 -0
  32. data/lib/language_operator/agent/instrumentation.rb +54 -0
  33. data/lib/language_operator/agent/metrics_tracker.rb +183 -0
  34. data/lib/language_operator/agent/safety/ast_validator.rb +272 -0
  35. data/lib/language_operator/agent/safety/audit_logger.rb +104 -0
  36. data/lib/language_operator/agent/safety/budget_tracker.rb +175 -0
  37. data/lib/language_operator/agent/safety/content_filter.rb +93 -0
  38. data/lib/language_operator/agent/safety/manager.rb +207 -0
  39. data/lib/language_operator/agent/safety/rate_limiter.rb +150 -0
  40. data/lib/language_operator/agent/safety/safe_executor.rb +115 -0
  41. data/lib/language_operator/agent/scheduler.rb +183 -0
  42. data/lib/language_operator/agent/telemetry.rb +116 -0
  43. data/lib/language_operator/agent/web_server.rb +610 -0
  44. data/lib/language_operator/agent/webhook_authenticator.rb +226 -0
  45. data/lib/language_operator/agent.rb +149 -0
  46. data/lib/language_operator/cli/commands/agent.rb +1252 -0
  47. data/lib/language_operator/cli/commands/cluster.rb +335 -0
  48. data/lib/language_operator/cli/commands/install.rb +404 -0
  49. data/lib/language_operator/cli/commands/model.rb +266 -0
  50. data/lib/language_operator/cli/commands/persona.rb +396 -0
  51. data/lib/language_operator/cli/commands/quickstart.rb +22 -0
  52. data/lib/language_operator/cli/commands/status.rb +156 -0
  53. data/lib/language_operator/cli/commands/tool.rb +537 -0
  54. data/lib/language_operator/cli/commands/use.rb +47 -0
  55. data/lib/language_operator/cli/errors/handler.rb +180 -0
  56. data/lib/language_operator/cli/errors/suggestions.rb +176 -0
  57. data/lib/language_operator/cli/formatters/code_formatter.rb +81 -0
  58. data/lib/language_operator/cli/formatters/log_formatter.rb +290 -0
  59. data/lib/language_operator/cli/formatters/progress_formatter.rb +53 -0
  60. data/lib/language_operator/cli/formatters/table_formatter.rb +179 -0
  61. data/lib/language_operator/cli/formatters/value_formatter.rb +113 -0
  62. data/lib/language_operator/cli/helpers/cluster_context.rb +62 -0
  63. data/lib/language_operator/cli/helpers/cluster_validator.rb +101 -0
  64. data/lib/language_operator/cli/helpers/editor_helper.rb +58 -0
  65. data/lib/language_operator/cli/helpers/kubeconfig_validator.rb +167 -0
  66. data/lib/language_operator/cli/helpers/resource_dependency_checker.rb +74 -0
  67. data/lib/language_operator/cli/helpers/schedule_builder.rb +108 -0
  68. data/lib/language_operator/cli/helpers/user_prompts.rb +69 -0
  69. data/lib/language_operator/cli/main.rb +232 -0
  70. data/lib/language_operator/cli/templates/tools/generic.yaml +66 -0
  71. data/lib/language_operator/cli/wizards/agent_wizard.rb +246 -0
  72. data/lib/language_operator/cli/wizards/quickstart_wizard.rb +588 -0
  73. data/lib/language_operator/client/base.rb +214 -0
  74. data/lib/language_operator/client/config.rb +136 -0
  75. data/lib/language_operator/client/cost_calculator.rb +37 -0
  76. data/lib/language_operator/client/mcp_connector.rb +123 -0
  77. data/lib/language_operator/client.rb +19 -0
  78. data/lib/language_operator/config/cluster_config.rb +101 -0
  79. data/lib/language_operator/config/tool_patterns.yaml +57 -0
  80. data/lib/language_operator/config/tool_registry.rb +96 -0
  81. data/lib/language_operator/config.rb +138 -0
  82. data/lib/language_operator/dsl/adapter.rb +124 -0
  83. data/lib/language_operator/dsl/agent_context.rb +90 -0
  84. data/lib/language_operator/dsl/agent_definition.rb +427 -0
  85. data/lib/language_operator/dsl/chat_endpoint_definition.rb +115 -0
  86. data/lib/language_operator/dsl/config.rb +119 -0
  87. data/lib/language_operator/dsl/context.rb +50 -0
  88. data/lib/language_operator/dsl/execution_context.rb +47 -0
  89. data/lib/language_operator/dsl/helpers.rb +109 -0
  90. data/lib/language_operator/dsl/http.rb +184 -0
  91. data/lib/language_operator/dsl/mcp_server_definition.rb +73 -0
  92. data/lib/language_operator/dsl/parameter_definition.rb +124 -0
  93. data/lib/language_operator/dsl/registry.rb +36 -0
  94. data/lib/language_operator/dsl/shell.rb +125 -0
  95. data/lib/language_operator/dsl/tool_definition.rb +112 -0
  96. data/lib/language_operator/dsl/webhook_authentication.rb +114 -0
  97. data/lib/language_operator/dsl/webhook_definition.rb +106 -0
  98. data/lib/language_operator/dsl/workflow_definition.rb +259 -0
  99. data/lib/language_operator/dsl.rb +160 -0
  100. data/lib/language_operator/errors.rb +60 -0
  101. data/lib/language_operator/kubernetes/client.rb +279 -0
  102. data/lib/language_operator/kubernetes/resource_builder.rb +194 -0
  103. data/lib/language_operator/loggable.rb +47 -0
  104. data/lib/language_operator/logger.rb +141 -0
  105. data/lib/language_operator/retry.rb +123 -0
  106. data/lib/language_operator/retryable.rb +132 -0
  107. data/lib/language_operator/tool_loader.rb +242 -0
  108. data/lib/language_operator/validators.rb +170 -0
  109. data/lib/language_operator/version.rb +1 -1
  110. data/lib/language_operator.rb +65 -3
  111. data/requirements/tasks/challenge.md +9 -0
  112. data/requirements/tasks/iterate.md +36 -0
  113. data/requirements/tasks/optimize.md +21 -0
  114. data/requirements/tasks/tag.md +5 -0
  115. data/test_agent_dsl.rb +108 -0
  116. metadata +503 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc1890d41e08f23d06230234f5a77672ecb5139721f8744d66e9dab3f2d1ce52
4
- data.tar.gz: 140fb96f5ce0ba1329c41ec1bfdaa072655ffd42e3d959acd72d9343b526651e
3
+ metadata.gz: c31089cce835003d727a915a79d0ddf4a3fe1300dee6027ec842e6ef8dc5361b
4
+ data.tar.gz: e6450b3f1a2c898247b1dc01d543086881371939549889fbfcb7d6d8c8c992a0
5
5
  SHA512:
6
- metadata.gz: 3c20e8cabe5b84004ae06d0e54435b36de48500e953739c93222d324e2ee98b9654f50cb8b6005c2492224dc5635b84bbea72a4019cfe21375aa159c74590e4d
7
- data.tar.gz: 1b125cd94f4d382b73cba3ca17aa3e92ab5b50b0e897099f2e8da6e677ddc438019df6d424e38466e1802649b4d8a365b2696f6379047c97f05aa0f3e28565cf
6
+ metadata.gz: 61f3a17c1e9b7369e18a686a9fcd02af26f0e66a7f7a9e24540e6695532390c931cfc426a3f8e67e6cbf2ad5a71a98dfaa0c2564cd4819a3d8c85af99bd70040
7
+ data.tar.gz: ecb13cc62fba6fe0e2a7f05e383727680c9c8d34fefc6522fdafea07947373117cacda56b8c36c88bfb460b0d1a627d3ca45b561893026ac652e517bbf12af73
data/.rubocop.yml ADDED
@@ -0,0 +1,125 @@
1
+ # RuboCop configuration for language-operator gem
2
+
3
+ AllCops:
4
+ NewCops: enable
5
+ TargetRubyVersion: 3.2
6
+ SuggestExtensions: false
7
+ Exclude:
8
+ - 'vendor/**/*'
9
+ - 'tmp/**/*'
10
+ - 'bin/bump-version'
11
+ - 'lib/language_operator/cli/templates/**/*'
12
+
13
+ # Metrics
14
+ Metrics/BlockLength:
15
+ Max: 30
16
+ Exclude:
17
+ - 'spec/**/*'
18
+ - 'Rakefile'
19
+ - '*.gemspec'
20
+ - 'test_*.rb'
21
+ - 'examples/**/*'
22
+
23
+ Metrics/MethodLength:
24
+ Max: 35
25
+ Exclude:
26
+ - 'spec/**/*'
27
+ - 'lib/language_operator/dsl/**/*'
28
+ - 'lib/language_operator/cli/**/*'
29
+ - 'lib/language_operator/client/**/*'
30
+ - 'lib/language_operator/agent/**/*'
31
+
32
+ Metrics/AbcSize:
33
+ Max: 35
34
+ Exclude:
35
+ - 'spec/**/*'
36
+ - 'lib/language_operator/dsl/**/*'
37
+ - 'lib/language_operator/cli/**/*'
38
+ - 'lib/language_operator/client/**/*'
39
+ - 'lib/language_operator/agent/**/*'
40
+
41
+ Metrics/ClassLength:
42
+ Max: 175
43
+ Exclude:
44
+ - 'spec/**/*'
45
+ - 'lib/language_operator/cli/**/*'
46
+ - 'lib/language_operator/agent/**/*'
47
+ - 'lib/language_operator/kubernetes/**/*'
48
+
49
+ Metrics/ModuleLength:
50
+ Max: 150
51
+ Exclude:
52
+ - 'spec/**/*'
53
+
54
+ Metrics/CyclomaticComplexity:
55
+ Max: 15
56
+ Exclude:
57
+ - 'spec/**/*'
58
+ - 'lib/language_operator/dsl/**/*'
59
+ - 'lib/language_operator/cli/**/*'
60
+
61
+ Metrics/PerceivedComplexity:
62
+ Max: 15
63
+ Exclude:
64
+ - 'spec/**/*'
65
+ - 'lib/language_operator/dsl/**/*'
66
+ - 'lib/language_operator/cli/**/*'
67
+
68
+ Metrics/ParameterLists:
69
+ Max: 8
70
+ CountKeywordArgs: false
71
+
72
+ # Lint
73
+ Lint/DuplicateMethods:
74
+ Exclude:
75
+ - 'lib/language_operator/dsl/**/*'
76
+
77
+ Lint/DuplicateBranch:
78
+ Enabled: false
79
+
80
+ Lint/UnusedMethodArgument:
81
+ AllowUnusedKeywordArguments: true
82
+
83
+ Lint/UnusedBlockArgument:
84
+ AllowUnusedKeywordArguments: true
85
+
86
+ # Style
87
+ Style/Documentation:
88
+ Enabled: false
89
+
90
+ Style/StringLiterals:
91
+ EnforcedStyle: single_quotes
92
+
93
+ Style/FrozenStringLiteralComment:
94
+ Enabled: true
95
+ EnforcedStyle: always
96
+
97
+ Style/OptionalBooleanParameter:
98
+ Enabled: false
99
+
100
+ Style/EmptyElse:
101
+ Enabled: false
102
+
103
+ # Gemspec
104
+ Gemspec/DevelopmentDependencies:
105
+ Enabled: false
106
+
107
+ # Naming
108
+ Naming/AccessorMethodName:
109
+ Enabled: false
110
+
111
+ Naming/MethodParameterName:
112
+ Exclude:
113
+ - 'examples/**/*'
114
+ - 'lib/language_operator/agent/webhook_authenticator.rb'
115
+
116
+ Naming/PredicateMethod:
117
+ Exclude:
118
+ - 'lib/language_operator/agent/webhook_authenticator.rb'
119
+
120
+ # Layout
121
+ Layout/LineLength:
122
+ Max: 155
123
+ Exclude:
124
+ - 'spec/**/*'
125
+ - '*.gemspec'
data/CHANGELOG.md ADDED
@@ -0,0 +1,53 @@
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
+ ## [Unreleased]
9
+
10
+ ### Changed
11
+ - **GitHub Migration**: Migrated project from self-hosted Forgejo to GitHub
12
+ - Repository now hosted at: https://github.com/language-operator/language-operator-gem
13
+ - Updated all infrastructure references to use public GitHub resources
14
+ - Container images now use GitHub Container Registry (ghcr.io)
15
+ - Helm charts now use GitHub Pages (https://language-operator.github.io/charts)
16
+ - Tool registry now uses GitHub raw content URLs
17
+ - Migrated CI/CD from Forgejo workflows to GitHub Actions
18
+ - Better community access and collaboration
19
+
20
+ ### Security
21
+ - **Removed hardcoded API token** from tool registry configuration
22
+ - Token authentication now uses environment variables (`GITHUB_TOKEN`)
23
+ - Improved security posture by eliminating embedded credentials
24
+
25
+ ### Changed (Previous)
26
+ - **Gem Hosting Migration**: Switched primary gem hosting from self-hosted Forgejo registry to RubyGems.org
27
+ - RubyGems.org is now the primary publishing target for better discoverability and easier installation
28
+ - Forgejo registry remains as an optional fallback (publishes if `REGISTRY_TOKEN` secret is configured)
29
+ - Updated CI workflow to prioritize RubyGems.org publishing
30
+ - Added installation instructions and RubyGems badge to README.md
31
+ - Users can now install via: `gem install language-operator`
32
+ - **License**: Updated gemspec license from MIT to FSL-1.1-Apache-2.0 to match LICENSE file
33
+ - **Repository Cleanup**: Removed `.rspec_status` from version control (already in .gitignore)
34
+
35
+ ## [0.1.0] - 2025-11-05
36
+
37
+ ### Added
38
+ - Initial release of language-operator Ruby gem
39
+ - `aictl` CLI tool for managing AI agents on Kubernetes
40
+ - DSL for defining agents, tools, and workflows
41
+ - Support for MCP (Model Context Protocol) servers
42
+ - Integration with multiple LLM providers (Anthropic, OpenAI, etc.)
43
+ - Kubernetes resource management for LanguageAgent, LanguageModel, and LanguagePersona CRDs
44
+ - Agent lifecycle management (create, list, describe, delete, logs, pause, resume)
45
+ - Tool scaffolding and management
46
+ - Persona management for agent behavior customization
47
+ - Cluster configuration and context switching
48
+ - Comprehensive test suite with unit and e2e tests
49
+ - RuboCop linting configuration
50
+ - Makefile for common development tasks
51
+
52
+ [Unreleased]: https://github.com/langop/language-operator/compare/v0.1.0...HEAD
53
+ [0.1.0]: https://github.com/langop/language-operator/releases/tag/v0.1.0
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in language-operator.gemspec
6
+ gemspec
7
+
8
+ gem 'pry', '~> 0.14', group: :development
data/Gemfile.lock ADDED
@@ -0,0 +1,284 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ language-operator (0.1.30)
5
+ k8s-ruby (~> 0.17)
6
+ mcp (~> 0.4)
7
+ opentelemetry-exporter-otlp (~> 0.27)
8
+ opentelemetry-instrumentation-http (~> 0.23)
9
+ opentelemetry-instrumentation-rack (~> 0.24)
10
+ opentelemetry-sdk (~> 1.4)
11
+ parser (~> 3.0)
12
+ pastel (~> 0.8)
13
+ puma (~> 6.0)
14
+ rack (~> 3.0)
15
+ rackup (~> 2.0)
16
+ rouge (~> 4.0)
17
+ ruby_llm (~> 1.8)
18
+ ruby_llm-mcp (~> 0.1)
19
+ rufus-scheduler (~> 3.9)
20
+ thor (~> 1.3)
21
+ tty-prompt (~> 0.23)
22
+ tty-spinner (~> 0.9)
23
+ tty-table (~> 0.12)
24
+
25
+ GEM
26
+ remote: https://rubygems.org/
27
+ specs:
28
+ addressable (2.8.7)
29
+ public_suffix (>= 2.0.2, < 7.0)
30
+ ast (2.4.3)
31
+ base64 (0.3.0)
32
+ bigdecimal (3.3.1)
33
+ coderay (1.1.3)
34
+ concurrent-ruby (1.3.5)
35
+ crack (1.0.1)
36
+ bigdecimal
37
+ rexml
38
+ diff-lcs (1.6.2)
39
+ dry-configurable (1.3.0)
40
+ dry-core (~> 1.1)
41
+ zeitwerk (~> 2.6)
42
+ dry-core (1.1.0)
43
+ concurrent-ruby (~> 1.0)
44
+ logger
45
+ zeitwerk (~> 2.6)
46
+ dry-inflector (1.2.0)
47
+ dry-logic (1.6.0)
48
+ bigdecimal
49
+ concurrent-ruby (~> 1.0)
50
+ dry-core (~> 1.1)
51
+ zeitwerk (~> 2.6)
52
+ dry-struct (1.8.0)
53
+ dry-core (~> 1.1)
54
+ dry-types (~> 1.8, >= 1.8.2)
55
+ ice_nine (~> 0.11)
56
+ zeitwerk (~> 2.6)
57
+ dry-types (1.8.3)
58
+ bigdecimal (~> 3.0)
59
+ concurrent-ruby (~> 1.0)
60
+ dry-core (~> 1.0)
61
+ dry-inflector (~> 1.0)
62
+ dry-logic (~> 1.4)
63
+ zeitwerk (~> 2.6)
64
+ et-orbi (1.4.0)
65
+ tzinfo
66
+ event_stream_parser (1.0.0)
67
+ excon (0.112.0)
68
+ faraday (2.14.0)
69
+ faraday-net_http (>= 2.0, < 3.5)
70
+ json
71
+ logger
72
+ faraday-multipart (1.1.1)
73
+ multipart-post (~> 2.0)
74
+ faraday-net_http (3.4.1)
75
+ net-http (>= 0.5.0)
76
+ faraday-retry (2.3.2)
77
+ faraday (~> 2.0)
78
+ fugit (1.12.1)
79
+ et-orbi (~> 1.4)
80
+ raabro (~> 1.4)
81
+ google-protobuf (4.33.0)
82
+ bigdecimal
83
+ rake (>= 13)
84
+ google-protobuf (4.33.0-x86_64-linux-gnu)
85
+ bigdecimal
86
+ rake (>= 13)
87
+ googleapis-common-protos-types (1.22.0)
88
+ google-protobuf (~> 4.26)
89
+ hashdiff (1.2.1)
90
+ http-2 (1.1.1)
91
+ httpx (1.6.3)
92
+ http-2 (>= 1.0.0)
93
+ ice_nine (0.11.2)
94
+ json (2.15.2)
95
+ json-schema (5.2.2)
96
+ addressable (~> 2.8)
97
+ bigdecimal (~> 3.1)
98
+ json_rpc_handler (0.1.1)
99
+ jsonpath (1.1.5)
100
+ multi_json
101
+ k8s-ruby (0.17.2)
102
+ base64
103
+ dry-configurable
104
+ dry-struct
105
+ dry-types
106
+ excon (~> 0.71)
107
+ hashdiff (~> 1.0)
108
+ jsonpath (~> 1.1)
109
+ recursive-open-struct (~> 1.1, >= 1.1.3)
110
+ yajl-ruby (~> 1.4)
111
+ yaml-safe_load_stream3
112
+ language_server-protocol (3.17.0.5)
113
+ lint_roller (1.1.0)
114
+ logger (1.7.0)
115
+ marcel (1.1.0)
116
+ mcp (0.4.0)
117
+ json-schema (>= 4.1)
118
+ json_rpc_handler (~> 0.1)
119
+ method_source (1.1.0)
120
+ multi_json (1.17.0)
121
+ multipart-post (2.4.1)
122
+ net-http (0.7.0)
123
+ uri
124
+ nio4r (2.7.5)
125
+ opentelemetry-api (1.7.0)
126
+ opentelemetry-common (0.23.0)
127
+ opentelemetry-api (~> 1.0)
128
+ opentelemetry-exporter-otlp (0.31.1)
129
+ google-protobuf (>= 3.18)
130
+ googleapis-common-protos-types (~> 1.3)
131
+ opentelemetry-api (~> 1.1)
132
+ opentelemetry-common (~> 0.20)
133
+ opentelemetry-sdk (~> 1.10)
134
+ opentelemetry-semantic_conventions
135
+ opentelemetry-instrumentation-base (0.25.0)
136
+ opentelemetry-api (~> 1.7)
137
+ opentelemetry-common (~> 0.21)
138
+ opentelemetry-registry (~> 0.1)
139
+ opentelemetry-instrumentation-http (0.27.0)
140
+ opentelemetry-instrumentation-base (~> 0.25)
141
+ opentelemetry-instrumentation-rack (0.29.0)
142
+ opentelemetry-instrumentation-base (~> 0.25)
143
+ opentelemetry-registry (0.4.0)
144
+ opentelemetry-api (~> 1.1)
145
+ opentelemetry-sdk (1.10.0)
146
+ opentelemetry-api (~> 1.1)
147
+ opentelemetry-common (~> 0.20)
148
+ opentelemetry-registry (~> 0.2)
149
+ opentelemetry-semantic_conventions
150
+ opentelemetry-semantic_conventions (1.36.0)
151
+ opentelemetry-api (~> 1.0)
152
+ ostruct (0.6.3)
153
+ parallel (1.27.0)
154
+ parser (3.3.10.0)
155
+ ast (~> 2.4.1)
156
+ racc
157
+ pastel (0.8.0)
158
+ tty-color (~> 0.5)
159
+ prism (1.6.0)
160
+ pry (0.15.2)
161
+ coderay (~> 1.1)
162
+ method_source (~> 1.0)
163
+ public_suffix (6.0.2)
164
+ puma (6.6.1)
165
+ nio4r (~> 2.0)
166
+ raabro (1.4.0)
167
+ racc (1.8.1)
168
+ rack (3.2.4)
169
+ rack-test (2.2.0)
170
+ rack (>= 1.3)
171
+ rackup (2.2.1)
172
+ rack (>= 3)
173
+ rainbow (3.1.1)
174
+ rake (13.3.1)
175
+ recursive-open-struct (1.3.1)
176
+ ostruct
177
+ regexp_parser (2.11.3)
178
+ rexml (3.4.4)
179
+ rouge (4.6.1)
180
+ rspec (3.13.2)
181
+ rspec-core (~> 3.13.0)
182
+ rspec-expectations (~> 3.13.0)
183
+ rspec-mocks (~> 3.13.0)
184
+ rspec-core (3.13.6)
185
+ rspec-support (~> 3.13.0)
186
+ rspec-expectations (3.13.5)
187
+ diff-lcs (>= 1.2.0, < 2.0)
188
+ rspec-support (~> 3.13.0)
189
+ rspec-mocks (3.13.7)
190
+ diff-lcs (>= 1.2.0, < 2.0)
191
+ rspec-support (~> 3.13.0)
192
+ rspec-support (3.13.6)
193
+ rubocop (1.81.7)
194
+ json (~> 2.3)
195
+ language_server-protocol (~> 3.17.0.2)
196
+ lint_roller (~> 1.1.0)
197
+ parallel (~> 1.10)
198
+ parser (>= 3.3.0.2)
199
+ rainbow (>= 2.2.2, < 4.0)
200
+ regexp_parser (>= 2.9.3, < 3.0)
201
+ rubocop-ast (>= 1.47.1, < 2.0)
202
+ ruby-progressbar (~> 1.7)
203
+ unicode-display_width (>= 2.4.0, < 4.0)
204
+ rubocop-ast (1.47.1)
205
+ parser (>= 3.3.7.2)
206
+ prism (~> 1.4)
207
+ rubocop-performance (1.26.1)
208
+ lint_roller (~> 1.1)
209
+ rubocop (>= 1.75.0, < 2.0)
210
+ rubocop-ast (>= 1.47.1, < 2.0)
211
+ ruby-progressbar (1.13.0)
212
+ ruby_llm (1.9.1)
213
+ base64
214
+ event_stream_parser (~> 1)
215
+ faraday (>= 1.10.0)
216
+ faraday-multipart (>= 1)
217
+ faraday-net_http (>= 1)
218
+ faraday-retry (>= 1)
219
+ marcel (~> 1.0)
220
+ ruby_llm-schema (~> 0.2.1)
221
+ zeitwerk (~> 2)
222
+ ruby_llm-mcp (0.7.0)
223
+ httpx (~> 1.4)
224
+ json-schema (~> 5.0)
225
+ ruby_llm (~> 1.9)
226
+ zeitwerk (~> 2)
227
+ ruby_llm-schema (0.2.1)
228
+ rufus-scheduler (3.9.2)
229
+ fugit (~> 1.1, >= 1.11.1)
230
+ strings (0.2.1)
231
+ strings-ansi (~> 0.2)
232
+ unicode-display_width (>= 1.5, < 3.0)
233
+ unicode_utils (~> 1.4)
234
+ strings-ansi (0.2.0)
235
+ thor (1.4.0)
236
+ tty-color (0.6.0)
237
+ tty-cursor (0.7.1)
238
+ tty-prompt (0.23.1)
239
+ pastel (~> 0.8)
240
+ tty-reader (~> 0.8)
241
+ tty-reader (0.9.0)
242
+ tty-cursor (~> 0.7)
243
+ tty-screen (~> 0.8)
244
+ wisper (~> 2.0)
245
+ tty-screen (0.8.2)
246
+ tty-spinner (0.9.3)
247
+ tty-cursor (~> 0.7)
248
+ tty-table (0.12.0)
249
+ pastel (~> 0.8)
250
+ strings (~> 0.2.0)
251
+ tty-screen (~> 0.8)
252
+ tzinfo (2.0.6)
253
+ concurrent-ruby (~> 1.0)
254
+ unicode-display_width (2.6.0)
255
+ unicode_utils (1.4.0)
256
+ uri (1.1.1)
257
+ webmock (3.26.1)
258
+ addressable (>= 2.8.0)
259
+ crack (>= 0.3.2)
260
+ hashdiff (>= 0.4.0, < 2.0.0)
261
+ wisper (2.0.1)
262
+ yajl-ruby (1.4.3)
263
+ yaml-safe_load_stream3 (0.1.2)
264
+ yard (0.9.37)
265
+ zeitwerk (2.7.3)
266
+
267
+ PLATFORMS
268
+ ruby
269
+ x86_64-linux
270
+
271
+ DEPENDENCIES
272
+ bundler (~> 2.0)
273
+ language-operator!
274
+ pry (~> 0.14)
275
+ rack-test (~> 2.1)
276
+ rake (~> 13.0)
277
+ rspec (~> 3.0)
278
+ rubocop (~> 1.60)
279
+ rubocop-performance (~> 1.20)
280
+ webmock (~> 3.23)
281
+ yard (~> 0.9.37)
282
+
283
+ BUNDLED WITH
284
+ 2.6.9