Class: SwarmSDK::Agent::SystemPromptBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/swarm_sdk/agent/system_prompt_builder.rb

Overview

Builds system prompts for agents

This class encapsulates all system prompt construction logic, including:

  • Base system prompt rendering (for coding agents)
  • Non-coding base prompt rendering
  • Plugin prompt contribution collection
  • Combining base and custom prompts

Safety Note for SwarmMemory Integration

This is an INTERNAL helper that receives Definition attributes as input. Definition remains the single source of truth with all instance variables. SwarmMemory uses agent_definition.instance_eval { binding } for ERB templating, which requires all properties to be on Definition object. This helper is safe because it doesn't affect Definition's structure - it only extracts logic.

Constant Summary collapse

BASE_SYSTEM_PROMPT_PATH =
File.expand_path("../prompts/base_system_prompt.md.erb", __dir__)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(custom_prompt:, coding_agent:, disable_default_tools:, directory:, definition:, disable_environment_info: false) ⇒ SystemPromptBuilder

Returns a new instance of SystemPromptBuilder.



46
47
48
49
50
51
52
53
54
# File 'lib/swarm_sdk/agent/system_prompt_builder.rb', line 46

def initialize(custom_prompt:, coding_agent:, disable_default_tools:, directory:, definition:,
  disable_environment_info: false)
  @custom_prompt = custom_prompt
  @coding_agent = coding_agent
  @disable_default_tools = disable_default_tools
  @directory = directory
  @definition = definition
  @disable_environment_info = disable_environment_info
end

Class Method Details

.build(custom_prompt:, coding_agent:, disable_default_tools:, directory:, definition:, disable_environment_info: false) ⇒ String

Build the complete system prompt for an agent

Parameters:

  • custom_prompt (String, nil)

    Custom system prompt from configuration

  • coding_agent (Boolean)

    Whether agent is configured for coding tasks

  • disable_default_tools (Boolean, Array, nil)

    Default tools disable configuration

  • directory (String)

    Agent's working directory

  • definition (Definition)

    Full definition for plugin contributions

  • disable_environment_info (Boolean) (defaults to: false)

    Whether to omit environment info from prompt

Returns:

  • (String)

    Complete system prompt



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/swarm_sdk/agent/system_prompt_builder.rb', line 33

def build(custom_prompt:, coding_agent:, disable_default_tools:, directory:, definition:,
  disable_environment_info: false)
  new(
    custom_prompt: custom_prompt,
    coding_agent: coding_agent,
    disable_default_tools: disable_default_tools,
    directory: directory,
    definition: definition,
    disable_environment_info: disable_environment_info,
  ).build
end

Instance Method Details

#buildObject



56
57
58
59
60
# File 'lib/swarm_sdk/agent/system_prompt_builder.rb', line 56

def build
  prompt = base_prompt_section
  prompt = append_plugin_contributions(prompt)
  prompt
end