
// Copyright © 2023-2026 Cognizant Technology Solutions Corp, www.cognizant.com.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// END COPYRIGHT

// To obtain information concerning the code generation that is used by this Interface Definition Language
// please see the following:
//
// Go - https://developers.google.com/protocol-buffers/docs/reference/go-generated
// Python - https://developers.google.com/protocol-buffers/docs/reference/python-generated
//
syntax = "proto3";

package dev.cognizant_ai.neuro_san.api.grpc.concierge;

import "google/api/annotations.proto";

option go_package = "github.com/cognizant-ai-lab/neuro_san/internal/gen/dev.cognizant_ai/neuro_san/api/grpc/concierge/v1;concierge";

// The service provides system-wide information about resources available
// in current instance of neuro-san.
service ConciergeService {

    // Called when a client needs the information about available agents.
    rpc List (ConciergeRequest) returns (ConciergeResponse) {
        option (google.api.http) = {
            get: "/api/v1/list"
        };
    }
}

// Request structure for List gRPC method
message ConciergeRequest {
}

// Description of an agent's function
message AgentInfo {
    // Agent name
    string agent_name =  1 [json_name="agent_name"];

    // Outward-facing description of what the agent does.
    string description = 2 [json_name="description"];

    // Optional metadata describing where this agent falls into larger agent grouping(s).
    repeated string tags = 3 [json_name="tags"];
}

// Response structure for List gRPC method
message ConciergeResponse {

    // List of agent descriptions
    repeated AgentInfo agents = 1 [json_name="agents"];
}

