@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 <> interface ToolRegistry <> interface Tool <> 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