language-operator 0.0.1 → 0.1.31

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +125 -0
  3. data/CHANGELOG.md +88 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +284 -0
  6. data/LICENSE +229 -21
  7. data/Makefile +82 -0
  8. data/README.md +3 -11
  9. data/Rakefile +63 -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/SCHEMA_VERSION.md +250 -0
  16. data/docs/dsl/agent-reference.md +604 -0
  17. data/docs/dsl/best-practices.md +1078 -0
  18. data/docs/dsl/chat-endpoints.md +895 -0
  19. data/docs/dsl/constraints.md +671 -0
  20. data/docs/dsl/mcp-integration.md +1177 -0
  21. data/docs/dsl/webhooks.md +932 -0
  22. data/docs/dsl/workflows.md +744 -0
  23. data/lib/language_operator/agent/base.rb +110 -0
  24. data/lib/language_operator/agent/executor.rb +440 -0
  25. data/lib/language_operator/agent/instrumentation.rb +54 -0
  26. data/lib/language_operator/agent/metrics_tracker.rb +183 -0
  27. data/lib/language_operator/agent/safety/ast_validator.rb +272 -0
  28. data/lib/language_operator/agent/safety/audit_logger.rb +104 -0
  29. data/lib/language_operator/agent/safety/budget_tracker.rb +175 -0
  30. data/lib/language_operator/agent/safety/content_filter.rb +93 -0
  31. data/lib/language_operator/agent/safety/manager.rb +207 -0
  32. data/lib/language_operator/agent/safety/rate_limiter.rb +150 -0
  33. data/lib/language_operator/agent/safety/safe_executor.rb +127 -0
  34. data/lib/language_operator/agent/scheduler.rb +183 -0
  35. data/lib/language_operator/agent/telemetry.rb +116 -0
  36. data/lib/language_operator/agent/web_server.rb +610 -0
  37. data/lib/language_operator/agent/webhook_authenticator.rb +226 -0
  38. data/lib/language_operator/agent.rb +149 -0
  39. data/lib/language_operator/cli/commands/agent.rb +1205 -0
  40. data/lib/language_operator/cli/commands/cluster.rb +371 -0
  41. data/lib/language_operator/cli/commands/install.rb +404 -0
  42. data/lib/language_operator/cli/commands/model.rb +266 -0
  43. data/lib/language_operator/cli/commands/persona.rb +393 -0
  44. data/lib/language_operator/cli/commands/quickstart.rb +22 -0
  45. data/lib/language_operator/cli/commands/status.rb +143 -0
  46. data/lib/language_operator/cli/commands/system.rb +772 -0
  47. data/lib/language_operator/cli/commands/tool.rb +537 -0
  48. data/lib/language_operator/cli/commands/use.rb +47 -0
  49. data/lib/language_operator/cli/errors/handler.rb +180 -0
  50. data/lib/language_operator/cli/errors/suggestions.rb +176 -0
  51. data/lib/language_operator/cli/formatters/code_formatter.rb +77 -0
  52. data/lib/language_operator/cli/formatters/log_formatter.rb +288 -0
  53. data/lib/language_operator/cli/formatters/progress_formatter.rb +49 -0
  54. data/lib/language_operator/cli/formatters/status_formatter.rb +37 -0
  55. data/lib/language_operator/cli/formatters/table_formatter.rb +163 -0
  56. data/lib/language_operator/cli/formatters/value_formatter.rb +113 -0
  57. data/lib/language_operator/cli/helpers/cluster_context.rb +62 -0
  58. data/lib/language_operator/cli/helpers/cluster_validator.rb +101 -0
  59. data/lib/language_operator/cli/helpers/editor_helper.rb +58 -0
  60. data/lib/language_operator/cli/helpers/kubeconfig_validator.rb +167 -0
  61. data/lib/language_operator/cli/helpers/pastel_helper.rb +24 -0
  62. data/lib/language_operator/cli/helpers/resource_dependency_checker.rb +74 -0
  63. data/lib/language_operator/cli/helpers/schedule_builder.rb +108 -0
  64. data/lib/language_operator/cli/helpers/user_prompts.rb +69 -0
  65. data/lib/language_operator/cli/main.rb +236 -0
  66. data/lib/language_operator/cli/templates/tools/generic.yaml +66 -0
  67. data/lib/language_operator/cli/wizards/agent_wizard.rb +246 -0
  68. data/lib/language_operator/cli/wizards/quickstart_wizard.rb +588 -0
  69. data/lib/language_operator/client/base.rb +214 -0
  70. data/lib/language_operator/client/config.rb +136 -0
  71. data/lib/language_operator/client/cost_calculator.rb +37 -0
  72. data/lib/language_operator/client/mcp_connector.rb +123 -0
  73. data/lib/language_operator/client.rb +19 -0
  74. data/lib/language_operator/config/cluster_config.rb +101 -0
  75. data/lib/language_operator/config/tool_patterns.yaml +57 -0
  76. data/lib/language_operator/config/tool_registry.rb +96 -0
  77. data/lib/language_operator/config.rb +138 -0
  78. data/lib/language_operator/dsl/adapter.rb +124 -0
  79. data/lib/language_operator/dsl/agent_context.rb +90 -0
  80. data/lib/language_operator/dsl/agent_definition.rb +427 -0
  81. data/lib/language_operator/dsl/chat_endpoint_definition.rb +115 -0
  82. data/lib/language_operator/dsl/config.rb +119 -0
  83. data/lib/language_operator/dsl/context.rb +50 -0
  84. data/lib/language_operator/dsl/execution_context.rb +47 -0
  85. data/lib/language_operator/dsl/helpers.rb +109 -0
  86. data/lib/language_operator/dsl/http.rb +184 -0
  87. data/lib/language_operator/dsl/mcp_server_definition.rb +73 -0
  88. data/lib/language_operator/dsl/parameter_definition.rb +124 -0
  89. data/lib/language_operator/dsl/registry.rb +36 -0
  90. data/lib/language_operator/dsl/schema.rb +1102 -0
  91. data/lib/language_operator/dsl/shell.rb +125 -0
  92. data/lib/language_operator/dsl/tool_definition.rb +112 -0
  93. data/lib/language_operator/dsl/webhook_authentication.rb +114 -0
  94. data/lib/language_operator/dsl/webhook_definition.rb +106 -0
  95. data/lib/language_operator/dsl/workflow_definition.rb +259 -0
  96. data/lib/language_operator/dsl.rb +161 -0
  97. data/lib/language_operator/errors.rb +60 -0
  98. data/lib/language_operator/kubernetes/client.rb +279 -0
  99. data/lib/language_operator/kubernetes/resource_builder.rb +194 -0
  100. data/lib/language_operator/loggable.rb +47 -0
  101. data/lib/language_operator/logger.rb +141 -0
  102. data/lib/language_operator/retry.rb +123 -0
  103. data/lib/language_operator/retryable.rb +132 -0
  104. data/lib/language_operator/templates/README.md +23 -0
  105. data/lib/language_operator/templates/examples/agent_synthesis.tmpl +115 -0
  106. data/lib/language_operator/templates/examples/persona_distillation.tmpl +19 -0
  107. data/lib/language_operator/templates/schema/.gitkeep +0 -0
  108. data/lib/language_operator/templates/schema/CHANGELOG.md +93 -0
  109. data/lib/language_operator/templates/schema/agent_dsl_openapi.yaml +306 -0
  110. data/lib/language_operator/templates/schema/agent_dsl_schema.json +452 -0
  111. data/lib/language_operator/tool_loader.rb +242 -0
  112. data/lib/language_operator/validators.rb +170 -0
  113. data/lib/language_operator/version.rb +1 -1
  114. data/lib/language_operator.rb +65 -3
  115. data/requirements/tasks/challenge.md +9 -0
  116. data/requirements/tasks/iterate.md +36 -0
  117. data/requirements/tasks/optimize.md +21 -0
  118. data/requirements/tasks/tag.md +5 -0
  119. data/test_agent_dsl.rb +108 -0
  120. metadata +507 -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: eb53d7e9ca7cceedb04334c17bcfde8c976f94916c2da54c35de1dee3884444e
4
+ data.tar.gz: 0b71cd8e346ae4a058806e5db91165a1a5cd24c63bd9b68fd361b430cd333131
5
5
  SHA512:
6
- metadata.gz: 3c20e8cabe5b84004ae06d0e54435b36de48500e953739c93222d324e2ee98b9654f50cb8b6005c2492224dc5635b84bbea72a4019cfe21375aa159c74590e4d
7
- data.tar.gz: 1b125cd94f4d382b73cba3ca17aa3e92ab5b50b0e897099f2e8da6e677ddc438019df6d424e38466e1802649b4d8a365b2696f6379047c97f05aa0f3e28565cf
6
+ metadata.gz: 85349b922729847281abeadcf0bc27a0abff89034c97ffe01d0c8b1adfd97db104622c9f9bb4a9f16e65b90e9ad22dd6c6ede84c61714e210b2da72b3c7050e0
7
+ data.tar.gz: d2daaeb57d6ce2fbe50e231980d306e5b5bd4b592cade3bbf3a92df15b3733db53b6f12c693c68af5ee82d27f5f6902aab724c80ef589d0ed7733719018469df
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,88 @@
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
+ ### Added
11
+ - **Schema Version Method**: Added `LanguageOperator::Dsl::Schema.version` method that returns the current schema version (linked to gem version)
12
+ - **Schema Versioning Documentation**: Added comprehensive `docs/dsl/SCHEMA_VERSION.md` documenting versioning policy, semantic version semantics for schema changes, compatibility rules, and deprecation policy
13
+ - **Schema Export CLI Commands**: New `aictl system schema` command for exporting DSL schema
14
+ - Export as JSON Schema v7 (default): `aictl system schema`
15
+ - Export as YAML: `aictl system schema --format yaml`
16
+ - Export as OpenAPI 3.0.3 spec: `aictl system schema --format openapi`
17
+ - Show version only: `aictl system schema --version`
18
+ - **Synthesis Template Management**: New `aictl system synthesis-template` command for managing code generation templates
19
+ - Export agent synthesis template: `aictl system synthesis-template`
20
+ - Export persona distillation template: `aictl system synthesis-template --type persona`
21
+ - Export with JSON/YAML metadata: `aictl system synthesis-template --format json --with-schema`
22
+ - Validate template syntax: `aictl system synthesis-template --validate`
23
+ - **Template Validation**: New `aictl system validate-template` command for validating synthesis templates
24
+ - Validate custom templates: `aictl system validate-template --template /path/to/template.tmpl`
25
+ - Validate bundled templates: `aictl system validate-template --type agent`
26
+ - AST-based validation against DSL schema
27
+ - Detailed violation reporting with line numbers
28
+ - **Synthesis Testing**: New `aictl system test-synthesis` command for testing agent code generation
29
+ - Test synthesis from natural language: `aictl system test-synthesis --instructions "Monitor GitHub issues"`
30
+ - Dry-run mode to preview prompts: `--dry-run`
31
+ - Automatic temporal intent detection (scheduled vs autonomous)
32
+ - LLM-powered code generation with validation
33
+ - **Schema Artifacts**: Auto-generated schema artifacts stored in `lib/language_operator/templates/schema/`
34
+ - `agent_dsl_schema.json` - Complete JSON Schema v7 specification
35
+ - `agent_dsl_openapi.yaml` - OpenAPI 3.0.3 API documentation
36
+ - `CHANGELOG.md` - Schema version history
37
+ - **Safe Methods API**: New public methods on `LanguageOperator::Dsl::Schema`
38
+ - `Schema.safe_agent_methods` - Returns array of safe agent DSL methods
39
+ - `Schema.safe_tool_methods` - Returns array of safe tool DSL methods
40
+ - `Schema.safe_helper_methods` - Returns array of safe helper methods
41
+ - Schema version method includes YARD documentation with examples
42
+ - Tests added for schema version access and validation
43
+ - Integration tests for all new CLI commands
44
+
45
+ ### Changed
46
+ - **GitHub Migration**: Migrated project from self-hosted Forgejo to GitHub
47
+ - Repository now hosted at: https://github.com/language-operator/language-operator-gem
48
+ - Updated all infrastructure references to use public GitHub resources
49
+ - Container images now use GitHub Container Registry (ghcr.io)
50
+ - Helm charts now use GitHub Pages (https://language-operator.github.io/charts)
51
+ - Tool registry now uses GitHub raw content URLs
52
+ - Migrated CI/CD from Forgejo workflows to GitHub Actions
53
+ - Better community access and collaboration
54
+
55
+ ### Security
56
+ - **Removed hardcoded API token** from tool registry configuration
57
+ - Token authentication now uses environment variables (`GITHUB_TOKEN`)
58
+ - Improved security posture by eliminating embedded credentials
59
+
60
+ ### Changed (Previous)
61
+ - **Gem Hosting Migration**: Switched primary gem hosting from self-hosted Forgejo registry to RubyGems.org
62
+ - RubyGems.org is now the primary publishing target for better discoverability and easier installation
63
+ - Forgejo registry remains as an optional fallback (publishes if `REGISTRY_TOKEN` secret is configured)
64
+ - Updated CI workflow to prioritize RubyGems.org publishing
65
+ - Added installation instructions and RubyGems badge to README.md
66
+ - Users can now install via: `gem install language-operator`
67
+ - **License**: Updated gemspec license from MIT to FSL-1.1-Apache-2.0 to match LICENSE file
68
+ - **Repository Cleanup**: Removed `.rspec_status` from version control (already in .gitignore)
69
+
70
+ ## [0.1.0] - 2025-11-05
71
+
72
+ ### Added
73
+ - Initial release of language-operator Ruby gem
74
+ - `aictl` CLI tool for managing AI agents on Kubernetes
75
+ - DSL for defining agents, tools, and workflows
76
+ - Support for MCP (Model Context Protocol) servers
77
+ - Integration with multiple LLM providers (Anthropic, OpenAI, etc.)
78
+ - Kubernetes resource management for LanguageAgent, LanguageModel, and LanguagePersona CRDs
79
+ - Agent lifecycle management (create, list, describe, delete, logs, pause, resume)
80
+ - Tool scaffolding and management
81
+ - Persona management for agent behavior customization
82
+ - Cluster configuration and context switching
83
+ - Comprehensive test suite with unit and e2e tests
84
+ - RuboCop linting configuration
85
+ - Makefile for common development tasks
86
+
87
+ [Unreleased]: https://github.com/langop/language-operator/compare/v0.1.0...HEAD
88
+ [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.31)
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