Module: Silas::AgentSdk::VersionGuard
- Defined in:
- lib/silas/agent_sdk/version_guard.rb
Overview
The adapter wraps an external CLI whose JSON stream can shift between versions, so pin a tested range and fail loudly outside it.
Class Method Summary collapse
Class Method Details
.assert!(bin, requirement: Silas.config.agent_sdk_cli_version_range) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/silas/agent_sdk/version_guard.rb', line 8 def assert!(bin, requirement: Silas.config.agent_sdk_cli_version_range) version = detect(bin) raise Silas::Error, "could not determine `#{bin}` version (is the Claude CLI installed?)" if version.nil? unless Gem::Requirement.new(requirement.split(",").map(&:strip)).satisfied_by?(Gem::Version.new(version)) raise Silas::Error, "claude CLI #{version} is outside the tested range (#{requirement}); pin or upgrade" end version end |
.detect(bin) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/silas/agent_sdk/version_guard.rb', line 18 def detect(bin) out = `#{bin} --version 2>/dev/null` out[/\d+\.\d+\.\d+/] rescue StandardError nil end |