@startuml
!theme plain
package "infra-tools" {
  class SandboxedToolExecutor
  class DispatchingToolExecutor
  class DefaultToolRegistry
  class ShellTool
  class DiffUtil
  class ToolConfig
  class ShellConfig
  class FileReadConfig
  class FileWriteConfig
  class FileEditConfig
}
interface ToolExecutor <<core:tools>>
interface ToolRegistry <<core:tools>>
interface Tool <<core:tools>>
ToolExecutor <|.. SandboxedToolExecutor
ToolExecutor <|.. DispatchingToolExecutor
ToolExecutor <|.. ShellTool
ToolRegistry <|.. DefaultToolRegistry
Tool <|.. ShellTool
SandboxedToolExecutor --> ToolRegistry : resolves
SandboxedToolExecutor --> ToolExecutor : delegates to
DispatchingToolExecutor --> ToolRegistry : resolves
SandboxedToolExecutor --> DiffUtil : uses
ToolConfig --> ShellConfig
ToolConfig --> FileReadConfig
ToolConfig --> FileWriteConfig
ToolConfig --> FileEditConfig
@enduml
