Class: SwarmSDK::ToolPermissionsProxy

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

Overview

Proxy for configuring permissions on a specific tool

Examples:

tool(:Write).allow_paths "tmp/**/*"
tool(:Write).deny_paths "tmp/secrets/**"
tool(:Bash).allow_commands "^git status$"

Instance Method Summary collapse

Constructor Details

#initialize(tool_name, permissions_hash) ⇒ ToolPermissionsProxy

Returns a new instance of ToolPermissionsProxy.



66
67
68
69
# File 'lib/swarm_sdk/permissions_builder.rb', line 66

def initialize(tool_name, permissions_hash)
  @tool_name = tool_name.to_sym
  @permissions = permissions_hash
end

Instance Method Details

#allow_commands(*patterns) ⇒ self

Add allowed command patterns (Bash tool only)

Parameters:

  • patterns (Array<String>)

    Regex patterns for allowed commands

Returns:

  • (self)


97
98
99
100
101
102
# File 'lib/swarm_sdk/permissions_builder.rb', line 97

def allow_commands(*patterns)
  ensure_tool_config
  @permissions[@tool_name][:allowed_commands] ||= []
  @permissions[@tool_name][:allowed_commands].concat(patterns.flatten)
  self
end

#allow_paths(*patterns) ⇒ self

Add allowed path patterns

Parameters:

  • patterns (Array<String>)

    Glob patterns for allowed paths

Returns:

  • (self)


75
76
77
78
79
80
# File 'lib/swarm_sdk/permissions_builder.rb', line 75

def allow_paths(*patterns)
  ensure_tool_config
  @permissions[@tool_name][:allowed_paths] ||= []
  @permissions[@tool_name][:allowed_paths].concat(patterns.flatten)
  self
end

#deny_commands(*patterns) ⇒ self

Add denied command patterns (Bash tool only)

Parameters:

  • patterns (Array<String>)

    Regex patterns for denied commands

Returns:

  • (self)


108
109
110
111
112
113
# File 'lib/swarm_sdk/permissions_builder.rb', line 108

def deny_commands(*patterns)
  ensure_tool_config
  @permissions[@tool_name][:denied_commands] ||= []
  @permissions[@tool_name][:denied_commands].concat(patterns.flatten)
  self
end

#deny_paths(*patterns) ⇒ self

Add denied path patterns

Parameters:

  • patterns (Array<String>)

    Glob patterns for denied paths

Returns:

  • (self)


86
87
88
89
90
91
# File 'lib/swarm_sdk/permissions_builder.rb', line 86

def deny_paths(*patterns)
  ensure_tool_config
  @permissions[@tool_name][:denied_paths] ||= []
  @permissions[@tool_name][:denied_paths].concat(patterns.flatten)
  self
end