-spec find_agent(AgentId) -> Result when AgentId :: term(), Result :: {ok, AgentInfo} | {error, Reason}, AgentInfo :: map(), Reason :: term().
-spec find_all() -> Result when Result :: {ok, [AgentInfo]} | {error, Reason}, AgentInfo :: map(), Reason :: term().
-spec find_by_capability(Capability) -> Result when Capability :: term(), Result :: {ok, [AgentInfo]} | {error, Reason}, AgentInfo :: map(), Reason :: term().
-spec get_agent_info(AgentId) -> Result when AgentId :: term(), Result :: {ok, AgentInfo} | {error, Reason}, AgentInfo :: map(), Reason :: term().
-spec register_agent(AgentId, Pid, Capabilities) -> Result when AgentId :: term(), Pid :: pid(), Capabilities :: map(), Result :: ok | {error, Reason}, Reason :: term().
-spec unregister_agent(AgentId) -> Result when AgentId :: term(), Result :: ok | {error, Reason}, Reason :: term().
-spec update_agent_capabilities(AgentId, Capabilities) -> Result when AgentId :: term(), Capabilities :: map(), Result :: ok | {error, Reason}, Reason :: term().
-spec update_agent_status(AgentId, Status) -> Result when AgentId :: term(), Status :: atom(), Result :: ok | {error, Reason}, Reason :: term().