Class: Legion::Extensions::Agentic::Social::Apprenticeship::Helpers::ApprenticeshipEngine

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb

Instance Method Summary collapse

Constructor Details

#initializeApprenticeshipEngine

Returns a new instance of ApprenticeshipEngine.



10
11
12
13
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 10

def initialize
  @apprenticeships = {}
  @sessions        = []
end

Instance Method Details

#active_apprenticeshipsObject



48
49
50
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 48

def active_apprenticeships
  @apprenticeships.values.reject(&:graduated?)
end

#by_apprentice(apprentice_id:) ⇒ Object



56
57
58
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 56

def by_apprentice(apprentice_id:)
  @apprenticeships.values.select { |a| a.apprentice_id == apprentice_id }
end

#by_domain(domain:) ⇒ Object



60
61
62
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 60

def by_domain(domain:)
  @apprenticeships.values.select { |a| a.domain == domain }
end

#by_mentor(mentor_id:) ⇒ Object



52
53
54
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 52

def by_mentor(mentor_id:)
  @apprenticeships.values.select { |a| a.mentor_id == mentor_id }
end

#conduct_session(apprenticeship_id:, method:, success:) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 28

def conduct_session(apprenticeship_id:, method:, success:)
  appr = @apprenticeships[apprenticeship_id]
  return nil unless appr

  appr.learn!(method: method, success: success)
  record_session(apprenticeship_id: apprenticeship_id, method: method, success: success)
  appr
end

#countObject



73
74
75
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 73

def count
  @apprenticeships.size
end

#create_apprenticeship(skill_name:, domain:, mentor_id:, apprentice_id:) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 15

def create_apprenticeship(skill_name:, domain:, mentor_id:, apprentice_id:)
  return nil if @apprenticeships.size >= ApprenticeshipModel::MAX_APPRENTICESHIPS

  appr = Apprenticeship.new(
    skill_name:    skill_name,
    domain:        domain,
    mentor_id:     mentor_id,
    apprentice_id: apprentice_id
  )
  @apprenticeships[appr.id] = appr
  appr
end

#decay_allObject



64
65
66
67
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 64

def decay_all
  @apprenticeships.each_value(&:decay!)
  @apprenticeships.size
end

#get(apprenticeship_id) ⇒ Object



69
70
71
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 69

def get(apprenticeship_id)
  @apprenticeships[apprenticeship_id]
end

#graduated_apprenticeshipsObject



44
45
46
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 44

def graduated_apprenticeships
  @apprenticeships.values.select(&:graduated?)
end

#recommend_method(apprenticeship_id:) ⇒ Object



37
38
39
40
41
42
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 37

def recommend_method(apprenticeship_id:)
  appr = @apprenticeships[apprenticeship_id]
  return nil unless appr

  appr.recommended_method
end

#sessionsObject



77
78
79
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 77

def sessions
  @sessions.dup
end

#to_hObject



81
82
83
84
85
86
87
88
# File 'lib/legion/extensions/agentic/social/apprenticeship/helpers/apprenticeship_engine.rb', line 81

def to_h
  {
    total:     @apprenticeships.size,
    active:    active_apprenticeships.size,
    graduated: graduated_apprenticeships.size,
    sessions:  @sessions.size
  }
end