Class: Brute::Middleware::Skills

Inherits:
Base
  • Object
show all
Defined in:
lib/brute/middleware/025_skills.rb

Overview

Loads skill objects into the agent context.

Skills are handed in as objects — discovery is the caller's job:

skills = Brute::Skill.all(cwd: Dir.pwd)
agent
.use(Brute::Middleware::Skills, skills: skills)
.use(Brute::Middleware::SystemPrompt)

Per turn:

1. env[:skills] = the objects, for downstream middleware, tools, and
 the terminal app (prime-agent's resourceLoader.getSkills() analogue)
2. env[:metadata][:skills] = the same objects, so
 Middleware::SystemPrompt merges them into the prompt ctx and
 Brute::Prompts::Skills renders the <available_skills> section

Place it before Middleware::SystemPrompt in the stack. It never touches env itself.

Constant Summary

Constants included from Hooks

Hooks::AFTER_LLM_EVENT, Hooks::AFTER_TOOL_EVENT, Hooks::APPROVE_TOOL_EVENT, Hooks::BEFORE_LLM_EVENT, Hooks::BEFORE_TOOL_EVENT, Hooks::COMPACTED_EVENT, Hooks::COMPACT_DURATION_EVENT, Hooks::DURATION_EVENT, Hooks::ENTER_EVENT, Hooks::EXIT_EVENT, Hooks::FARADAY_ERROR_EVENT, Hooks::LLM_DURATION_EVENT, Hooks::LLM_FAILURE_EVENT, Hooks::MIDDLEWARE_ADDED_EVENT, Hooks::OPEN_ROUTER_SERVER_ERROR_EVENT, Hooks::STANDARD_ERROR_EVENT, Hooks::TOOL_DURATION_EVENT, Hooks::TURN_DURATION_EVENT, Hooks::TURN_END_EVENT, Hooks::TURN_START_EVENT

Instance Method Summary collapse

Methods included from Hooks

new

Constructor Details

#initialize(app, skills: []) ⇒ Skills

Returns a new instance of Skills.



27
28
29
30
# File 'lib/brute/middleware/025_skills.rb', line 27

def initialize(app, skills: [])
  @app = app
  @skills = skills
end

Instance Method Details

#call(env) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/brute/middleware/025_skills.rb', line 32

def call(env)
  env[:skills] = @skills
  env[:metadata] ||= {}
  env[:metadata][:skills] ||= @skills

  @app.call(env)
end