Skip to content
Kward Search API index

Class: Kward::Skills::TrustCoordinator

Inherits:
Object
  • Object
show all
Defined in:
lib/kward/skills/trust_coordinator.rb

Overview

Resolves which discovered project skills need a user decision.

Instance Method Summary collapse

Constructor Details

#initialize(workspace_root:, trust_store:) ⇒ TrustCoordinator

Returns a new instance of TrustCoordinator.



8
9
10
11
# File 'lib/kward/skills/trust_coordinator.rb', line 8

def initialize(workspace_root:, trust_store:)
  @workspace_root = workspace_root
  @trust_store = trust_store
end

Instance Method Details

#allowed_paths(candidates) ⇒ Object



25
26
27
# File 'lib/kward/skills/trust_coordinator.rb', line 25

def allowed_paths(candidates)
  candidates.filter_map { |candidate| candidate.path if decision(candidate) == "allow" }
end

#decision(candidate) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/kward/skills/trust_coordinator.rb', line 13

def decision(candidate)
  @trust_store.decision(
    workspace_root: @workspace_root,
    skill_path: candidate.path,
    digest: candidate.digest
  )
end

#pending(candidates) ⇒ Object



21
22
23
# File 'lib/kward/skills/trust_coordinator.rb', line 21

def pending(candidates)
  candidates.reject { |candidate| decision(candidate) }
end

#record!(candidates, decision) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/kward/skills/trust_coordinator.rb', line 33

def record!(candidates, decision)
  candidates.each do |candidate|
    @trust_store.set_decision!(
      workspace_root: @workspace_root,
      skill_path: candidate.path,
      digest: candidate.digest,
      decision: decision
    )
  end
end

#remove_workspace!Object



29
30
31
# File 'lib/kward/skills/trust_coordinator.rb', line 29

def remove_workspace!
  @trust_store.remove_workspace!(workspace_root: @workspace_root)
end