Sha256: 7703161ac9d30652da1307258f7bb522215bf298b52a5d5b89f24d735339faf8

Contents?: true

Size: 802 Bytes

Versions: 2

Compression:

Stored size: 802 Bytes

Contents

module Bristow
  module Agencies
    class Supervisor < Agency
      attr_accessor :supervisor

      def self.create(agents: [])
        agency = new(agents: agents)
        supervisor = Agents::Supervisor.new(
          available_agents: agents,
          agency: agency
        )
        agency.supervisor = supervisor
        agency.agents << supervisor
        agency
      end

      def initialize(agents: [])
        @agents = agents
        @supervisor = nil  # Will be set by create
      end

      def chat(messages, &block)
        raise "No supervisor set" unless supervisor

        # Convert string message to proper format
        messages = [{ role: "user", content: messages }] if messages.is_a?(String)
        
        supervisor.chat(messages, &block)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bristow-0.2.1 lib/bristow/agencies/supervisor.rb
bristow-0.2.0 lib/bristow/agencies/supervisor.rb