Three-Level Agent Interaction Negotiation and Connection
In order to maximize the flexibility and robustness of agent-to-agent negotiation and binding, I propose a three-level scheme.
Level One is the level of the agents themselves.
Level Two is the level of intermediaries that are able to work with agents as their clients. Each agent would have some number of Level Two intermediary agents with whom it has established a level of trust and with whom it is willing to work.
Level Three is the level of intermediaries for the intermediaries. This is the level at which "first contact" occurs between two agents. Each level two intermediary agent has some number of intermediary-to-intermediary agents (I2I agents) with whom it has established a level of trust and with whom it is willing to work.
Level One agents offering services would "advertise" to their Level Two intermediary agents who in turn advertise to their Level Three intermediary-to-intermediary agents who keep track of those advertised services.
Level One agents seeking services would notify their trusted Level Two intermediary agents of their interest. Those trusted Level Two intermediary agents would in turn notify their trusted Level Three intermediary-to-intermediary agents of the services that their Level One client agent seeks. Each Level Three agent would query its catalog of advertised services and proceed to competitively negotiate a "connection" (interaction contract). One or more I2I agents would become "primary contractors" and others might become "backup contractors".
Two Level One agents would never interact purely in a direct manner, but rather through their respective Level Two intermediaries. If a connection is disrupted, the Level Two intermediaries would then seek to "fix" the disruption. The fix may in fact require negotiating a new agent-to-agent connection. The Level One agents would be notified of all disruptions using an object-oriented event notification and given the opportunity to continue a fail-safe new connection or to abort the connection if appropriate. The Level One agents could be configured to blindly accept all re-negotiated connections. In other words, the developer of a Level One agent would never need to "worry" about the robustness of any connection. In fact, the whole point of the three-level arrangement is to maximize the odds of a successful connection and to maximize the odds that a connection can be renegotiated if disrupted.
Level Two intermediary agents may also seek to re-negotiate a connection based on performance. In fact, a host system might signal intermediary agents to downgrade or upgrade connectivity based on load measurements.