pub async fn worker(
config: Config,
directories: &[ResourceDirectory],
tool_directories: &[ResourceDirectory],
worker_id: Option<String>,
max_concurrency: u32,
lease_seconds: u64,
heartbeat_seconds: u64,
poll_ms: u64,
max_attempts: u32,
shutdown_seconds: u64,
allow_workspace_write: bool,
) -> Result<()>