// Package agent defines the Agent interface and related concepts. An agent is // an entity that knows how to execute an Fn function. // // The Agent Interface // // The Agent interface is the heart of this package. Agent exposes an api to // create calls from various parameters and then execute those calls. An Agent // has a few roles: // * manage the memory pool for a given server // * manage the container lifecycle for calls (hot+cold) // * execute calls against containers // * invoke Start and End for each call appropriately // * check the mq for any async calls, and submit them // // For more information about how an agent executes a call see the // documentation on the Agent interface. // // Variants // // There are two flavors of runner, the local Docker agent and a load-balancing // agent. To create an agent that uses Docker containers to execute calls, use // New(). // // To create an agent that can load-balance across a pool of sub-agents, use // NewLBAgent(). package agent