Delegate a task to a specialized sub-agent by specifying a role. The `role` parameter selects the type of agent to dispatch — for example, a Manager can spawn an 'analyst', while an Engineer can spawn a 'coder'. The `ask` parameter contains the task description the sub-agent should work on. Note that execution mode depends on the caller: the Manager dispatches tasks asynchronously (results arrive later via a notification) while the Engineer and Maintainer wait synchronously and receive the result immediately.