Class: PromptObjects::Capability

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

Overview

Base class for all capabilities (both primitives and prompt objects). Everything in the system implements this interface.

Direct Known Subclasses

Primitive, PromptObject

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCapability

Returns a new instance of Capability.



10
11
12
# File 'lib/prompt_objects/capability.rb', line 10

def initialize
  @state = :idle
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



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

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



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

def name
  @name
end

#stateObject

Returns the value of attribute state.



8
9
10
# File 'lib/prompt_objects/capability.rb', line 8

def state
  @state
end

Class Method Details

.execution_policy(parallel_safe: false, side_effect: :exclusive, resource_keys: nil, workload: :blocking) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/prompt_objects/capability.rb', line 15

def execution_policy(parallel_safe: false, side_effect: :exclusive, resource_keys: nil, workload: :blocking)
  @execution_policy = Execution::Policy.new(
    parallel_safe: parallel_safe,
    side_effect: side_effect,
    resource_keys: resource_keys,
    workload: workload
  )
end

.execution_policy_definitionObject



24
25
26
27
28
# File 'lib/prompt_objects/capability.rb', line 24

def execution_policy_definition
  return @execution_policy if defined?(@execution_policy) && @execution_policy

  superclass.respond_to?(:execution_policy_definition) ? superclass.execution_policy_definition : nil
end

Instance Method Details

#descriptorHash

Generate a tool descriptor for LLM function calling.

Returns:

  • (Hash)

    OpenAI-compatible tool descriptor



57
58
59
60
61
62
63
64
65
66
# File 'lib/prompt_objects/capability.rb', line 57

def descriptor
  {
    type: "function",
    function: {
      name: name,
      description: description,
      parameters: sanitize_schema(parameters)
    }
  }
end

#execution_policy_definitionObject



40
41
42
43
44
45
# File 'lib/prompt_objects/capability.rb', line 40

def execution_policy_definition
  self.class.execution_policy_definition || Execution::Policy.new(
    parallel_safe: false,
    side_effect: :exclusive
  )
end

#execution_policy_signatureObject



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

def execution_policy_signature
  execution_policy_definition.signature(self)
end

#parametersHash

Define the parameters this capability accepts. Override in subclasses for specific parameter schemas.

Returns:

  • (Hash)

    JSON Schema for parameters



93
94
95
96
97
98
99
# File 'lib/prompt_objects/capability.rb', line 93

def parameters
  {
    type: "object",
    properties: {},
    required: []
  }
end

#receive(message, context:) ⇒ String

Handle a message and return a response.

Parameters:

  • message (String, Hash)

    The incoming message

  • context (Context)

    Execution context with environment reference

Returns:

  • (String)

    The response

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/prompt_objects/capability.rb', line 51

def receive(message, context:)
  raise NotImplementedError, "#{self.class} must implement #receive"
end

#resolved_execution_policy(arguments:, context:) ⇒ Object



31
32
33
34
# File 'lib/prompt_objects/capability.rb', line 31

def resolved_execution_policy(arguments:, context:)
  policy = execution_policy_definition
  policy.resolve(arguments: arguments, context: context, capability: self)
end