// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.modular;

// Sessionmgr creates an instance of this service and passes it to the
// SessionShell so it can observe Agents for the user.
//
// TODO(alhaad): Add interfaces for modifying Agents for the user.
interface AgentProvider {
    // Registers a listener for changes in the list of agents.
    1: Watch(AgentProviderWatcher watcher);
};

// This interface is implemented by clients of AgentProvider and is updated
// whenever there is a change to the list of users.
interface AgentProviderWatcher {
    // Gives a full list of all agents that are running or scheduled to run.
    // TODO(alhaad): This currently only contains the URL of the agents. It should
    // contain more state information.
    1: OnUpdate(vector<string> agent_urls);
};
