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

Raises:



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