Class: PromptObjects::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/prompt_objects/registry.rb

Overview

Registry for all capabilities (both primitives and prompt objects). Provides lookup by name and generates tool descriptors for LLM calls.

Instance Method Summary collapse

Constructor Details

#initializeRegistry

Returns a new instance of Registry.



7
8
9
# File 'lib/prompt_objects/registry.rb', line 7

def initialize
  @capabilities = {}
end

Instance Method Details

#allArray<Capability>

Get all registered capabilities.

Returns:



42
43
44
# File 'lib/prompt_objects/registry.rb', line 42

def all
  @capabilities.values
end

#all_descriptorsArray<Hash>

Get tool descriptors for all capabilities.

Returns:

  • (Array<Hash>)


84
85
86
# File 'lib/prompt_objects/registry.rb', line 84

def all_descriptors
  @capabilities.values.map(&:descriptor)
end

#descriptors_for(names) ⇒ Array<Hash>

Get tool descriptors for a list of capability names.

Parameters:

  • names (Array<String>)

    Capability names

Returns:

  • (Array<Hash>)

    Tool descriptors for LLM



75
76
77
78
79
80
# File 'lib/prompt_objects/registry.rb', line 75

def descriptors_for(names)
  names.filter_map do |name|
    cap = get(name)
    cap&.descriptor
  end
end

#exists?(name) ⇒ Boolean

Check if a capability exists.

Parameters:

  • name (String)

    The capability name

Returns:

  • (Boolean)


36
37
38
# File 'lib/prompt_objects/registry.rb', line 36

def exists?(name)
  @capabilities.key?(name.to_s)
end

#get(name) ⇒ Capability?

Get a capability by name.

Parameters:

  • name (String)

    The capability name

Returns:

  • (Capability, nil)

    The capability or nil if not found



29
30
31
# File 'lib/prompt_objects/registry.rb', line 29

def get(name)
  @capabilities[name.to_s]
end

#namesArray<String>

Get all capability names.

Returns:

  • (Array<String>)


48
49
50
# File 'lib/prompt_objects/registry.rb', line 48

def names
  @capabilities.keys
end

#primitivesArray<Primitive>

Get only primitives.

Returns:



60
61
62
# File 'lib/prompt_objects/registry.rb', line 60

def primitives
  @capabilities.values.select { |c| c.is_a?(Primitive) }
end

#prompt_object?(name) ⇒ Boolean

Check if a capability is a prompt object.

Parameters:

  • name (String)

    The capability name

Returns:

  • (Boolean)


67
68
69
70
# File 'lib/prompt_objects/registry.rb', line 67

def prompt_object?(name)
  cap = get(name)
  cap.is_a?(PromptObject)
end

#prompt_objectsArray<PromptObject>

Get only prompt objects.

Returns:



54
55
56
# File 'lib/prompt_objects/registry.rb', line 54

def prompt_objects
  @capabilities.values.select { |c| c.is_a?(PromptObject) }
end

#register(capability) ⇒ Capability

Register a capability.

Parameters:

  • capability (Capability)

    The capability to register

Returns:



14
15
16
17
# File 'lib/prompt_objects/registry.rb', line 14

def register(capability)
  @capabilities[capability.name] = capability
  capability
end

#unregister(name) ⇒ Capability?

Unregister a capability by name.

Parameters:

  • name (String)

    The capability name

Returns:

  • (Capability, nil)

    The removed capability or nil



22
23
24
# File 'lib/prompt_objects/registry.rb', line 22

def unregister(name)
  @capabilities.delete(name.to_s)
end