Class: SwarmSDK::PermissionsBuilder

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

Overview

DSL builder for tool permissions configuration

Provides fluent API for configuring tool permissions using underscore syntax:

Examples:

Basic usage

permissions do
  tool(:Write).allow_paths "tmp/**/*"
  tool(:Write).deny_paths "tmp/secrets/**"
  tool(:Read).deny_paths "lib/**/*"
end

Bash commands

permissions do
  tool(:Bash).allow_commands "^git (status|diff|log)$"
  tool(:Bash).deny_commands "^rm -rf"
end

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePermissionsBuilder

Returns a new instance of PermissionsBuilder.



22
23
24
# File 'lib/swarm_sdk/permissions_builder.rb', line 22

def initialize
  @permissions = {}
end

Class Method Details

.build { ... } ⇒ Hash

Build permissions from block

Yields:

  • Block for configuring permissions

Returns:

  • (Hash)

    Permissions configuration



31
32
33
34
35
# File 'lib/swarm_sdk/permissions_builder.rb', line 31

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

Instance Method Details

#to_hHash

Convert to hash format expected by AgentDefinition

Returns:

  • (Hash)

    Permissions config



41
42
43
# File 'lib/swarm_sdk/permissions_builder.rb', line 41

def to_h
  @permissions
end

#tool(tool_name) ⇒ ToolPermissionsProxy

Get a tool permissions proxy for configuring a specific tool

Examples:

tool(:Write).allow_paths "tmp/**/*"
tool(:Bash).deny_commands "^rm -rf"

Parameters:

  • tool_name (Symbol, String)

    Tool name

Returns:



53
54
55
# File 'lib/swarm_sdk/permissions_builder.rb', line 53

def tool(tool_name)
  ToolPermissionsProxy.new(tool_name, @permissions)
end