Class: SkillBench::Registry::PackResolver
- Inherits:
-
Object
- Object
- SkillBench::Registry::PackResolver
- Defined in:
- lib/skill_bench/registry/pack_resolver.rb
Overview
Resolves skill paths from the ecosystem registry manifest. Reads a registry.json (from agent-mcp-runtime) and resolves pack → tile.json → skill path.
Instance Method Summary collapse
-
#initialize(registry_path) ⇒ PackResolver
constructor
A new instance of PackResolver.
-
#pack_names ⇒ Array<String>
Lists available pack names from the manifest.
-
#resolve_skill(pack_name, skill_name, visited = []) ⇒ String?
Resolves a skill path within a named pack.
Constructor Details
#initialize(registry_path) ⇒ PackResolver
Returns a new instance of PackResolver.
12 13 14 |
# File 'lib/skill_bench/registry/pack_resolver.rb', line 12 def initialize(registry_path) @manifest = JSON.parse(File.read(registry_path)) end |
Instance Method Details
#pack_names ⇒ Array<String>
Lists available pack names from the manifest.
53 54 55 |
# File 'lib/skill_bench/registry/pack_resolver.rb', line 53 def pack_names @manifest.fetch('packs', {}).keys end |
#resolve_skill(pack_name, skill_name, visited = []) ⇒ String?
Resolves a skill path within a named pack.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/skill_bench/registry/pack_resolver.rb', line 22 def resolve_skill(pack_name, skill_name, visited = []) return nil if visited.include?(pack_name) visited += [pack_name] pack = @manifest.dig('packs', pack_name) return nil unless pack source_path = resolve_source(pack['source']) return nil unless source_path tile_path = File.join(source_path, pack['tile']) return nil unless File.exist?(tile_path) tile = JSON.parse(File.read(tile_path)) # 1. Try to resolve directly resolved = resolve_direct(tile, source_path, skill_name) return resolved if resolved # 2. Try to resolve via deprecated_skills redirect resolved = resolve_redirect(tile, skill_name, visited) return resolved if resolved # 3. Try to resolve via depends_on packs in registry resolve_dependencies(pack, skill_name, visited) end |