Class: SwarmSDK::V3::MemoryBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/swarm_sdk/v3/agent_builder.rb

Overview

Sub-builder for memory configuration within AgentBuilder

Collects memory-related settings and returns them as a hash with the ‘memory_` prefix expected by AgentDefinition.

Examples:

config = MemoryBuilder.build do
  directory ".swarm/memory"
  stm_turns 8
end
# => { memory_directory: ".swarm/memory", memory_stm_turns: 8 }

Constant Summary collapse

VALID_ADAPTER_TYPES =

Valid adapter type symbols

[:sqlite, :filesystem].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeMemoryBuilder

Returns a new instance of MemoryBuilder.



437
438
439
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 437

def initialize
  @config = {}
end

Class Method Details

.build { ... } ⇒ Hash

Build memory config from a DSL block

Yields:

  • DSL block evaluated via instance_eval

Returns:

  • (Hash)

    Memory configuration with ‘memory_` prefixed keys



430
431
432
433
434
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 430

def build(&block)
  builder = new
  builder.instance_eval(&block)
  builder.to_h
end

Instance Method Details

#adapter(value) ⇒ void

This method returns an undefined value.

Set the memory adapter

Examples:

Using a symbol

adapter :sqlite
adapter :filesystem

Using an adapter instance

adapter MyCustomAdapter.new("/path/to/storage")

Parameters:

Raises:

  • (ArgumentError)

    If value is not a valid adapter type or instance



496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 496

def adapter(value)
  case value
  when Symbol
    unless VALID_ADAPTER_TYPES.include?(value)
      raise ArgumentError, "Unknown memory adapter type: #{value.inspect}. " \
        "Valid types are: #{VALID_ADAPTER_TYPES.map(&:inspect).join(", ")}"
    end
  when Memory::Adapters::Base
    # Valid adapter instance
  else
    raise ArgumentError, "Memory adapter must be a Symbol (#{VALID_ADAPTER_TYPES.map(&:inspect).join(", ")}) " \
      "or an instance of Memory::Adapters::Base, got: #{value.class}"
  end
  @config[:memory_adapter] = value
end

#associative(value) ⇒ void

This method returns an undefined value.

Enable associative memory

When enabled, the agent naturally surfaces tangential memories in conversation, like a person who brings up related topics. Exploration cards get a distinct “YOU ALSO REMEMBER” section and guidance is injected into the system prompt.

Parameters:

  • value (Boolean)

    Whether to enable associative memory



521
522
523
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 521

def associative(value)
  @config[:memory_associative] = value
end

#directory(value) ⇒ void

This method returns an undefined value.

Set memory storage directory

Parameters:

  • value (String)

    Directory path



445
446
447
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 445

def directory(value)
  @config[:memory_directory] = value
end

#keyword_weight(value) ⇒ void

This method returns an undefined value.

Set keyword search weight for hybrid retrieval

Parameters:

  • value (Float)

    Weight between 0.0 and 1.0



477
478
479
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 477

def keyword_weight(value)
  @config[:memory_keyword_weight] = value
end

#retrieval_top_k(value) ⇒ void

This method returns an undefined value.

Set number of memory cards to retrieve per turn

Parameters:

  • value (Integer)

    Top-k retrieval count



461
462
463
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 461

def retrieval_top_k(value)
  @config[:memory_retrieval_top_k] = value
end

#semantic_weight(value) ⇒ void

This method returns an undefined value.

Set semantic search weight for hybrid retrieval

Parameters:

  • value (Float)

    Weight between 0.0 and 1.0



469
470
471
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 469

def semantic_weight(value)
  @config[:memory_semantic_weight] = value
end

#stm_turns(value) ⇒ void

This method returns an undefined value.

Set number of recent turns to keep in short-term memory

Parameters:

  • value (Integer)

    STM turn count



453
454
455
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 453

def stm_turns(value)
  @config[:memory_stm_turns] = value
end

#to_hHash

Return collected memory configuration

Returns:

  • (Hash)

    Memory config with ‘memory_` prefixed keys



528
529
530
# File 'lib/swarm_sdk/v3/agent_builder.rb', line 528

def to_h
  @config.dup
end