# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
import warnings

from abbenay_grpc.abbenay.v1 import service_pb2 as abbenay_dot_v1_dot_service__pb2

GRPC_GENERATED_VERSION = '1.83.0'
GRPC_VERSION = grpc.__version__
_version_not_supported = False

try:
    from grpc._utilities import first_version_is_lower
    _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
except ImportError:
    _version_not_supported = True

if _version_not_supported:
    raise RuntimeError(
        f'The grpc package installed is at version {GRPC_VERSION},'
        + ' but the generated code in abbenay/v1/service_pb2_grpc.py depends on'
        + f' grpcio>={GRPC_GENERATED_VERSION}.'
        + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
        + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
    )


class McpBridgeStub:
    """
    MCP Bridge Service - High-performance tool execution

    This service provides gRPC transport for MCP tools, combining:
    - MCP's semantic layer (tool definitions, JSON schemas for LLM understanding)
    - gRPC's performance layer (HTTP/2 multiplexing, bidirectional streaming)

    The "hybrid bridge" pattern: Keep the brain (MCP schemas), upgrade the pipe (gRPC).


    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.ListMcpTools = channel.unary_unary(
                '/abbenay.v1.McpBridge/ListMcpTools',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListMcpToolsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListMcpToolsResponse.FromString,
                _registered_method=True)
        self.CallTool = channel.unary_stream(
                '/abbenay.v1.McpBridge/CallTool',
                request_serializer=abbenay_dot_v1_dot_service__pb2.CallToolRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
                _registered_method=True)
        self.CallToolInteractive = channel.stream_stream(
                '/abbenay.v1.McpBridge/CallToolInteractive',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ToolInteractiveRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
                _registered_method=True)
        self.CallToolsBatch = channel.unary_stream(
                '/abbenay.v1.McpBridge/CallToolsBatch',
                request_serializer=abbenay_dot_v1_dot_service__pb2.CallToolsBatchRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
                _registered_method=True)
        self.ListResources = channel.unary_unary(
                '/abbenay.v1.McpBridge/ListResources',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListResourcesRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListResourcesResponse.FromString,
                _registered_method=True)
        self.ReadResource = channel.unary_unary(
                '/abbenay.v1.McpBridge/ReadResource',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ReadResourceRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ReadResourceResponse.FromString,
                _registered_method=True)
        self.ListPrompts = channel.unary_unary(
                '/abbenay.v1.McpBridge/ListPrompts',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListPromptsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListPromptsResponse.FromString,
                _registered_method=True)
        self.GetPrompt = channel.unary_unary(
                '/abbenay.v1.McpBridge/GetPrompt',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetPromptRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetPromptResponse.FromString,
                _registered_method=True)


class McpBridgeServicer:
    """
    MCP Bridge Service - High-performance tool execution

    This service provides gRPC transport for MCP tools, combining:
    - MCP's semantic layer (tool definitions, JSON schemas for LLM understanding)
    - gRPC's performance layer (HTTP/2 multiplexing, bidirectional streaming)

    The "hybrid bridge" pattern: Keep the brain (MCP schemas), upgrade the pipe (gRPC).


    """

    def ListMcpTools(self, request, context):
        """Discovery: List available MCP tools with their schemas
        Returns full MCP tool definitions so LLMs understand what's available
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CallTool(self, request, context):
        """Execution: Call a tool with streaming response
        Supports progress updates, partial results, and cancellation
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CallToolInteractive(self, request_iterator, context):
        """Bidirectional: For tools that need user input mid-execution
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CallToolsBatch(self, request, context):
        """Batch: Execute multiple independent tools in parallel
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListResources(self, request, context):
        """Resources: List MCP resources (files, data sources)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReadResource(self, request, context):
        """Resources: Read a specific resource
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListPrompts(self, request, context):
        """Prompts: List available MCP prompts
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetPrompt(self, request, context):
        """Prompts: Get a prompt with arguments filled in
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_McpBridgeServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'ListMcpTools': grpc.unary_unary_rpc_method_handler(
                    servicer.ListMcpTools,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListMcpToolsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListMcpToolsResponse.SerializeToString,
            ),
            'CallTool': grpc.unary_stream_rpc_method_handler(
                    servicer.CallTool,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.CallToolRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.SerializeToString,
            ),
            'CallToolInteractive': grpc.stream_stream_rpc_method_handler(
                    servicer.CallToolInteractive,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ToolInteractiveRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.SerializeToString,
            ),
            'CallToolsBatch': grpc.unary_stream_rpc_method_handler(
                    servicer.CallToolsBatch,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.CallToolsBatchRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.SerializeToString,
            ),
            'ListResources': grpc.unary_unary_rpc_method_handler(
                    servicer.ListResources,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListResourcesRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListResourcesResponse.SerializeToString,
            ),
            'ReadResource': grpc.unary_unary_rpc_method_handler(
                    servicer.ReadResource,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ReadResourceRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ReadResourceResponse.SerializeToString,
            ),
            'ListPrompts': grpc.unary_unary_rpc_method_handler(
                    servicer.ListPrompts,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListPromptsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListPromptsResponse.SerializeToString,
            ),
            'GetPrompt': grpc.unary_unary_rpc_method_handler(
                    servicer.GetPrompt,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetPromptRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetPromptResponse.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'abbenay.v1.McpBridge', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('abbenay.v1.McpBridge', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class McpBridge:
    """
    MCP Bridge Service - High-performance tool execution

    This service provides gRPC transport for MCP tools, combining:
    - MCP's semantic layer (tool definitions, JSON schemas for LLM understanding)
    - gRPC's performance layer (HTTP/2 multiplexing, bidirectional streaming)

    The "hybrid bridge" pattern: Keep the brain (MCP schemas), upgrade the pipe (gRPC).


    """

    @staticmethod
    def ListMcpTools(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.McpBridge/ListMcpTools',
            abbenay_dot_v1_dot_service__pb2.ListMcpToolsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListMcpToolsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallTool(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(
            request,
            target,
            '/abbenay.v1.McpBridge/CallTool',
            abbenay_dot_v1_dot_service__pb2.CallToolRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallToolInteractive(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_stream(
            request_iterator,
            target,
            '/abbenay.v1.McpBridge/CallToolInteractive',
            abbenay_dot_v1_dot_service__pb2.ToolInteractiveRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CallToolsBatch(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(
            request,
            target,
            '/abbenay.v1.McpBridge/CallToolsBatch',
            abbenay_dot_v1_dot_service__pb2.CallToolsBatchRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ToolResponseChunk.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListResources(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.McpBridge/ListResources',
            abbenay_dot_v1_dot_service__pb2.ListResourcesRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListResourcesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ReadResource(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.McpBridge/ReadResource',
            abbenay_dot_v1_dot_service__pb2.ReadResourceRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ReadResourceResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListPrompts(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.McpBridge/ListPrompts',
            abbenay_dot_v1_dot_service__pb2.ListPromptsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListPromptsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetPrompt(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.McpBridge/GetPrompt',
            abbenay_dot_v1_dot_service__pb2.GetPromptRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetPromptResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)


class AbbenayStub:
    """
    Main Service - Unified daemon API



    Chat

    """

    def __init__(self, channel):
        """Constructor.

        Args:
            channel: A grpc.Channel.
        """
        self.Chat = channel.unary_stream(
                '/abbenay.v1.Abbenay/Chat',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ChatRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ChatChunk.FromString,
                _registered_method=True)
        self.SessionChat = channel.unary_stream(
                '/abbenay.v1.Abbenay/SessionChat',
                request_serializer=abbenay_dot_v1_dot_service__pb2.SessionChatRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ChatChunk.FromString,
                _registered_method=True)
        self.CreateSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/CreateSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.CreateSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Session.FromString,
                _registered_method=True)
        self.GetSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Session.FromString,
                _registered_method=True)
        self.ListSessions = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListSessions',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListSessionsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListSessionsResponse.FromString,
                _registered_method=True)
        self.DeleteSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/DeleteSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.DeleteSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.WatchSessions = channel.unary_stream(
                '/abbenay.v1.Abbenay/WatchSessions',
                request_serializer=abbenay_dot_v1_dot_service__pb2.WatchSessionsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.SessionEvent.FromString,
                _registered_method=True)
        self.ReplaySession = channel.unary_unary(
                '/abbenay.v1.Abbenay/ReplaySession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ReplaySessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ReplaySessionResponse.FromString,
                _registered_method=True)
        self.SummarizeSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/SummarizeSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.SummarizeSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.SummarizeSessionResponse.FromString,
                _registered_method=True)
        self.ForkSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/ForkSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ForkSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Session.FromString,
                _registered_method=True)
        self.ExportSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/ExportSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ExportSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ExportSessionResponse.FromString,
                _registered_method=True)
        self.ImportSession = channel.unary_unary(
                '/abbenay.v1.Abbenay/ImportSession',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ImportSessionRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Session.FromString,
                _registered_method=True)
        self.ListModels = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListModels',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListModelsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListModelsResponse.FromString,
                _registered_method=True)
        self.DiscoverModels = channel.unary_unary(
                '/abbenay.v1.Abbenay/DiscoverModels',
                request_serializer=abbenay_dot_v1_dot_service__pb2.DiscoverModelsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.DiscoverModelsResponse.FromString,
                _registered_method=True)
        self.ListProviders = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListProviders',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListProvidersRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListProvidersResponse.FromString,
                _registered_method=True)
        self.GetProviderStatus = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetProviderStatus',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetProviderStatusRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ProviderStatus.FromString,
                _registered_method=True)
        self.ListEngines = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListEngines',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListEnginesRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListEnginesResponse.FromString,
                _registered_method=True)
        self.ConfigureProvider = channel.unary_unary(
                '/abbenay.v1.Abbenay/ConfigureProvider',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ConfigureProviderRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ConfigureProviderResponse.FromString,
                _registered_method=True)
        self.RemoveProvider = channel.unary_unary(
                '/abbenay.v1.Abbenay/RemoveProvider',
                request_serializer=abbenay_dot_v1_dot_service__pb2.RemoveProviderRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.GetProviderTemplates = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetProviderTemplates',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesResponse.FromString,
                _registered_method=True)
        self.ListPolicies = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListPolicies',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListPoliciesRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListPoliciesResponse.FromString,
                _registered_method=True)
        self.CreatePolicy = channel.unary_unary(
                '/abbenay.v1.Abbenay/CreatePolicy',
                request_serializer=abbenay_dot_v1_dot_service__pb2.CreatePolicyRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.DeletePolicy = channel.unary_unary(
                '/abbenay.v1.Abbenay/DeletePolicy',
                request_serializer=abbenay_dot_v1_dot_service__pb2.DeletePolicyRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.ListTools = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListTools',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListToolsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListToolsResponse.FromString,
                _registered_method=True)
        self.ExecuteTool = channel.unary_unary(
                '/abbenay.v1.Abbenay/ExecuteTool',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ExecuteToolRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ExecuteToolResponse.FromString,
                _registered_method=True)
        self.GetConfig = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetConfig',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetConfigRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetConfigResponse.FromString,
                _registered_method=True)
        self.UpdateConfig = channel.unary_unary(
                '/abbenay.v1.Abbenay/UpdateConfig',
                request_serializer=abbenay_dot_v1_dot_service__pb2.UpdateConfigRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetConfigResponse.FromString,
                _registered_method=True)
        self.GetKeyStatus = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetKeyStatus',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetKeyStatusRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetKeyStatusResponse.FromString,
                _registered_method=True)
        self.ListMcpServerConfigs = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListMcpServerConfigs',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsResponse.FromString,
                _registered_method=True)
        self.ReconnectMcpServer = channel.unary_unary(
                '/abbenay.v1.Abbenay/ReconnectMcpServer',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ReconnectMcpServerRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.GetSecret = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetSecret',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetSecretRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetSecretResponse.FromString,
                _registered_method=True)
        self.SetSecret = channel.unary_unary(
                '/abbenay.v1.Abbenay/SetSecret',
                request_serializer=abbenay_dot_v1_dot_service__pb2.SetSecretRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.DeleteSecret = channel.unary_unary(
                '/abbenay.v1.Abbenay/DeleteSecret',
                request_serializer=abbenay_dot_v1_dot_service__pb2.DeleteSecretRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.ListSecrets = channel.unary_unary(
                '/abbenay.v1.Abbenay/ListSecrets',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ListSecretsRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.ListSecretsResponse.FromString,
                _registered_method=True)
        self.Register = channel.unary_unary(
                '/abbenay.v1.Abbenay/Register',
                request_serializer=abbenay_dot_v1_dot_service__pb2.RegisterRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.RegisterResponse.FromString,
                _registered_method=True)
        self.Unregister = channel.unary_unary(
                '/abbenay.v1.Abbenay/Unregister',
                request_serializer=abbenay_dot_v1_dot_service__pb2.UnregisterRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.GetStatus = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetStatus',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetStatusRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.DaemonStatus.FromString,
                _registered_method=True)
        self.GetConnectedWorkspaces = channel.unary_unary(
                '/abbenay.v1.Abbenay/GetConnectedWorkspaces',
                request_serializer=abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesResponse.FromString,
                _registered_method=True)
        self.Shutdown = channel.unary_unary(
                '/abbenay.v1.Abbenay/Shutdown',
                request_serializer=abbenay_dot_v1_dot_service__pb2.ShutdownRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.HealthCheck = channel.unary_unary(
                '/abbenay.v1.Abbenay/HealthCheck',
                request_serializer=abbenay_dot_v1_dot_service__pb2.HealthCheckRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.HealthCheckResponse.FromString,
                _registered_method=True)
        self.StartWebServer = channel.unary_unary(
                '/abbenay.v1.Abbenay/StartWebServer',
                request_serializer=abbenay_dot_v1_dot_service__pb2.StartWebServerRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.StartWebServerResponse.FromString,
                _registered_method=True)
        self.StopWebServer = channel.unary_unary(
                '/abbenay.v1.Abbenay/StopWebServer',
                request_serializer=abbenay_dot_v1_dot_service__pb2.StopWebServerRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.Empty.FromString,
                _registered_method=True)
        self.RegisterMcpServer = channel.unary_unary(
                '/abbenay.v1.Abbenay/RegisterMcpServer',
                request_serializer=abbenay_dot_v1_dot_service__pb2.RegisterMcpServerRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.RegisterMcpServerResponse.FromString,
                _registered_method=True)
        self.UnregisterMcpServer = channel.unary_unary(
                '/abbenay.v1.Abbenay/UnregisterMcpServer',
                request_serializer=abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerRequest.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerResponse.FromString,
                _registered_method=True)
        self.VSCodeStream = channel.stream_stream(
                '/abbenay.v1.Abbenay/VSCodeStream',
                request_serializer=abbenay_dot_v1_dot_service__pb2.VSCodeResponse.SerializeToString,
                response_deserializer=abbenay_dot_v1_dot_service__pb2.VSCodeRequest.FromString,
                _registered_method=True)


class AbbenayServicer:
    """
    Main Service - Unified daemon API



    Chat

    """

    def Chat(self, request, context):
        """Stateless chat (no session persistence)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SessionChat(self, request, context):
        """Chat within a session (persisted)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreateSession(self, request, context):
        """
        Sessions


        Create a new session
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetSession(self, request, context):
        """Get a session by ID
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListSessions(self, request, context):
        """List all sessions
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteSession(self, request, context):
        """Delete a session
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def WatchSessions(self, request, context):
        """Watch for session events (create, update, delete)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReplaySession(self, request, context):
        """Replay session for context injection
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SummarizeSession(self, request, context):
        """Get AI-generated summary of a session
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ForkSession(self, request, context):
        """Fork a session (create new session from existing)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ExportSession(self, request, context):
        """Export session as portable JSON
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ImportSession(self, request, context):
        """Import a session from JSON
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListModels(self, request, context):
        """
        Models & Providers


        List available models (config-gated: only configured/enabled models)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DiscoverModels(self, request, context):
        """Discover all models a provider offers (ignores config, for browsing/selection)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListProviders(self, request, context):
        """List configured providers
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetProviderStatus(self, request, context):
        """Get provider status (configured, healthy, etc.)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListEngines(self, request, context):
        """List available engine types (fixed set of API implementations)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ConfigureProvider(self, request, context):
        """
        Providers (CRUD)


        Configure a provider (add or update, with optional API key storage)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RemoveProvider(self, request, context):
        """Remove a provider configuration
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetProviderTemplates(self, request, context):
        """Get predefined provider templates for the add-provider wizard
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListPolicies(self, request, context):
        """
        Policies


        List all policies (built-in + custom)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def CreatePolicy(self, request, context):
        """Create or update a custom policy
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeletePolicy(self, request, context):
        """Delete a custom policy
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListTools(self, request, context):
        """
        Tools


        List available tools (from MCP servers)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ExecuteTool(self, request, context):
        """Execute a tool directly
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetConfig(self, request, context):
        """
        Configuration


        Get current configuration (user or workspace level)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UpdateConfig(self, request, context):
        """Update configuration (user or workspace level)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetKeyStatus(self, request, context):
        """Check if a specific key is available (keychain or env)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListMcpServerConfigs(self, request, context):
        """List configured MCP servers with connection status
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ReconnectMcpServer(self, request, context):
        """Reconnect a failed MCP server
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetSecret(self, request, context):
        """
        Secrets


        Get a secret (API key, etc.)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def SetSecret(self, request, context):
        """Set a secret
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def DeleteSecret(self, request, context):
        """Delete a secret
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def ListSecrets(self, request, context):
        """List secret keys (not values)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Register(self, request, context):
        """
        Daemon Lifecycle


        Register a client connection
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Unregister(self, request, context):
        """Unregister a client
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetStatus(self, request, context):
        """Get daemon status
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def GetConnectedWorkspaces(self, request, context):
        """Get workspaces from connected VS Code clients (queries via backchannel)
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def Shutdown(self, request, context):
        """Request daemon shutdown
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def HealthCheck(self, request, context):
        """Health check
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StartWebServer(self, request, context):
        """
        Web Dashboard (embedded in daemon)


        Start the embedded web server
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def StopWebServer(self, request, context):
        """Stop the embedded web server
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def RegisterMcpServer(self, request, context):
        """
        MCP Server Registration (for external MCP servers)


        Register an MCP server dynamically at runtime
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def UnregisterMcpServer(self, request, context):
        """Unregister a dynamically registered MCP server
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')

    def VSCodeStream(self, request_iterator, context):
        """
        VS Code Backchannel (Bidirectional Streaming)

        VS Code opens this stream and keeps it alive.
        The daemon pushes tool/model requests through it.
        VS Code sends responses back through the same stream.


        Bidirectional stream for daemon to call VS Code
        """
        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
        context.set_details('Method not implemented!')
        raise NotImplementedError('Method not implemented!')


def add_AbbenayServicer_to_server(servicer, server):
    rpc_method_handlers = {
            'Chat': grpc.unary_stream_rpc_method_handler(
                    servicer.Chat,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ChatRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ChatChunk.SerializeToString,
            ),
            'SessionChat': grpc.unary_stream_rpc_method_handler(
                    servicer.SessionChat,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.SessionChatRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ChatChunk.SerializeToString,
            ),
            'CreateSession': grpc.unary_unary_rpc_method_handler(
                    servicer.CreateSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.CreateSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Session.SerializeToString,
            ),
            'GetSession': grpc.unary_unary_rpc_method_handler(
                    servicer.GetSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Session.SerializeToString,
            ),
            'ListSessions': grpc.unary_unary_rpc_method_handler(
                    servicer.ListSessions,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListSessionsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListSessionsResponse.SerializeToString,
            ),
            'DeleteSession': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.DeleteSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'WatchSessions': grpc.unary_stream_rpc_method_handler(
                    servicer.WatchSessions,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.WatchSessionsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.SessionEvent.SerializeToString,
            ),
            'ReplaySession': grpc.unary_unary_rpc_method_handler(
                    servicer.ReplaySession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ReplaySessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ReplaySessionResponse.SerializeToString,
            ),
            'SummarizeSession': grpc.unary_unary_rpc_method_handler(
                    servicer.SummarizeSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.SummarizeSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.SummarizeSessionResponse.SerializeToString,
            ),
            'ForkSession': grpc.unary_unary_rpc_method_handler(
                    servicer.ForkSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ForkSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Session.SerializeToString,
            ),
            'ExportSession': grpc.unary_unary_rpc_method_handler(
                    servicer.ExportSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ExportSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ExportSessionResponse.SerializeToString,
            ),
            'ImportSession': grpc.unary_unary_rpc_method_handler(
                    servicer.ImportSession,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ImportSessionRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Session.SerializeToString,
            ),
            'ListModels': grpc.unary_unary_rpc_method_handler(
                    servicer.ListModels,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListModelsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListModelsResponse.SerializeToString,
            ),
            'DiscoverModels': grpc.unary_unary_rpc_method_handler(
                    servicer.DiscoverModels,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.DiscoverModelsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.DiscoverModelsResponse.SerializeToString,
            ),
            'ListProviders': grpc.unary_unary_rpc_method_handler(
                    servicer.ListProviders,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListProvidersRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListProvidersResponse.SerializeToString,
            ),
            'GetProviderStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.GetProviderStatus,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetProviderStatusRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ProviderStatus.SerializeToString,
            ),
            'ListEngines': grpc.unary_unary_rpc_method_handler(
                    servicer.ListEngines,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListEnginesRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListEnginesResponse.SerializeToString,
            ),
            'ConfigureProvider': grpc.unary_unary_rpc_method_handler(
                    servicer.ConfigureProvider,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ConfigureProviderRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ConfigureProviderResponse.SerializeToString,
            ),
            'RemoveProvider': grpc.unary_unary_rpc_method_handler(
                    servicer.RemoveProvider,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.RemoveProviderRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'GetProviderTemplates': grpc.unary_unary_rpc_method_handler(
                    servicer.GetProviderTemplates,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesResponse.SerializeToString,
            ),
            'ListPolicies': grpc.unary_unary_rpc_method_handler(
                    servicer.ListPolicies,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListPoliciesRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListPoliciesResponse.SerializeToString,
            ),
            'CreatePolicy': grpc.unary_unary_rpc_method_handler(
                    servicer.CreatePolicy,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.CreatePolicyRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'DeletePolicy': grpc.unary_unary_rpc_method_handler(
                    servicer.DeletePolicy,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.DeletePolicyRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'ListTools': grpc.unary_unary_rpc_method_handler(
                    servicer.ListTools,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListToolsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListToolsResponse.SerializeToString,
            ),
            'ExecuteTool': grpc.unary_unary_rpc_method_handler(
                    servicer.ExecuteTool,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ExecuteToolRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ExecuteToolResponse.SerializeToString,
            ),
            'GetConfig': grpc.unary_unary_rpc_method_handler(
                    servicer.GetConfig,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetConfigRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetConfigResponse.SerializeToString,
            ),
            'UpdateConfig': grpc.unary_unary_rpc_method_handler(
                    servicer.UpdateConfig,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.UpdateConfigRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetConfigResponse.SerializeToString,
            ),
            'GetKeyStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.GetKeyStatus,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetKeyStatusRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetKeyStatusResponse.SerializeToString,
            ),
            'ListMcpServerConfigs': grpc.unary_unary_rpc_method_handler(
                    servicer.ListMcpServerConfigs,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsResponse.SerializeToString,
            ),
            'ReconnectMcpServer': grpc.unary_unary_rpc_method_handler(
                    servicer.ReconnectMcpServer,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ReconnectMcpServerRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'GetSecret': grpc.unary_unary_rpc_method_handler(
                    servicer.GetSecret,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetSecretRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetSecretResponse.SerializeToString,
            ),
            'SetSecret': grpc.unary_unary_rpc_method_handler(
                    servicer.SetSecret,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.SetSecretRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'DeleteSecret': grpc.unary_unary_rpc_method_handler(
                    servicer.DeleteSecret,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.DeleteSecretRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'ListSecrets': grpc.unary_unary_rpc_method_handler(
                    servicer.ListSecrets,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ListSecretsRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.ListSecretsResponse.SerializeToString,
            ),
            'Register': grpc.unary_unary_rpc_method_handler(
                    servicer.Register,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.RegisterRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.RegisterResponse.SerializeToString,
            ),
            'Unregister': grpc.unary_unary_rpc_method_handler(
                    servicer.Unregister,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.UnregisterRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'GetStatus': grpc.unary_unary_rpc_method_handler(
                    servicer.GetStatus,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetStatusRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.DaemonStatus.SerializeToString,
            ),
            'GetConnectedWorkspaces': grpc.unary_unary_rpc_method_handler(
                    servicer.GetConnectedWorkspaces,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesResponse.SerializeToString,
            ),
            'Shutdown': grpc.unary_unary_rpc_method_handler(
                    servicer.Shutdown,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.ShutdownRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'HealthCheck': grpc.unary_unary_rpc_method_handler(
                    servicer.HealthCheck,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.HealthCheckRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.HealthCheckResponse.SerializeToString,
            ),
            'StartWebServer': grpc.unary_unary_rpc_method_handler(
                    servicer.StartWebServer,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.StartWebServerRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.StartWebServerResponse.SerializeToString,
            ),
            'StopWebServer': grpc.unary_unary_rpc_method_handler(
                    servicer.StopWebServer,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.StopWebServerRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.Empty.SerializeToString,
            ),
            'RegisterMcpServer': grpc.unary_unary_rpc_method_handler(
                    servicer.RegisterMcpServer,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.RegisterMcpServerRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.RegisterMcpServerResponse.SerializeToString,
            ),
            'UnregisterMcpServer': grpc.unary_unary_rpc_method_handler(
                    servicer.UnregisterMcpServer,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerRequest.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerResponse.SerializeToString,
            ),
            'VSCodeStream': grpc.stream_stream_rpc_method_handler(
                    servicer.VSCodeStream,
                    request_deserializer=abbenay_dot_v1_dot_service__pb2.VSCodeResponse.FromString,
                    response_serializer=abbenay_dot_v1_dot_service__pb2.VSCodeRequest.SerializeToString,
            ),
    }
    generic_handler = grpc.method_handlers_generic_handler(
            'abbenay.v1.Abbenay', rpc_method_handlers)
    server.add_generic_rpc_handlers((generic_handler,))
    server.add_registered_method_handlers('abbenay.v1.Abbenay', rpc_method_handlers)


 # This class is part of an EXPERIMENTAL API.
class Abbenay:
    """
    Main Service - Unified daemon API



    Chat

    """

    @staticmethod
    def Chat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(
            request,
            target,
            '/abbenay.v1.Abbenay/Chat',
            abbenay_dot_v1_dot_service__pb2.ChatRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ChatChunk.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def SessionChat(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(
            request,
            target,
            '/abbenay.v1.Abbenay/SessionChat',
            abbenay_dot_v1_dot_service__pb2.SessionChatRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ChatChunk.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CreateSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/CreateSession',
            abbenay_dot_v1_dot_service__pb2.CreateSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Session.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetSession',
            abbenay_dot_v1_dot_service__pb2.GetSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Session.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListSessions(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListSessions',
            abbenay_dot_v1_dot_service__pb2.ListSessionsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListSessionsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DeleteSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/DeleteSession',
            abbenay_dot_v1_dot_service__pb2.DeleteSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def WatchSessions(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_stream(
            request,
            target,
            '/abbenay.v1.Abbenay/WatchSessions',
            abbenay_dot_v1_dot_service__pb2.WatchSessionsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.SessionEvent.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ReplaySession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ReplaySession',
            abbenay_dot_v1_dot_service__pb2.ReplaySessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ReplaySessionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def SummarizeSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/SummarizeSession',
            abbenay_dot_v1_dot_service__pb2.SummarizeSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.SummarizeSessionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ForkSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ForkSession',
            abbenay_dot_v1_dot_service__pb2.ForkSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Session.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ExportSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ExportSession',
            abbenay_dot_v1_dot_service__pb2.ExportSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ExportSessionResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ImportSession(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ImportSession',
            abbenay_dot_v1_dot_service__pb2.ImportSessionRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Session.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListModels(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListModels',
            abbenay_dot_v1_dot_service__pb2.ListModelsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListModelsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DiscoverModels(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/DiscoverModels',
            abbenay_dot_v1_dot_service__pb2.DiscoverModelsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.DiscoverModelsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListProviders(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListProviders',
            abbenay_dot_v1_dot_service__pb2.ListProvidersRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListProvidersResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetProviderStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetProviderStatus',
            abbenay_dot_v1_dot_service__pb2.GetProviderStatusRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ProviderStatus.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListEngines(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListEngines',
            abbenay_dot_v1_dot_service__pb2.ListEnginesRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListEnginesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ConfigureProvider(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ConfigureProvider',
            abbenay_dot_v1_dot_service__pb2.ConfigureProviderRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ConfigureProviderResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def RemoveProvider(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/RemoveProvider',
            abbenay_dot_v1_dot_service__pb2.RemoveProviderRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetProviderTemplates(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetProviderTemplates',
            abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetProviderTemplatesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListPolicies(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListPolicies',
            abbenay_dot_v1_dot_service__pb2.ListPoliciesRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListPoliciesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def CreatePolicy(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/CreatePolicy',
            abbenay_dot_v1_dot_service__pb2.CreatePolicyRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DeletePolicy(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/DeletePolicy',
            abbenay_dot_v1_dot_service__pb2.DeletePolicyRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListTools(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListTools',
            abbenay_dot_v1_dot_service__pb2.ListToolsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListToolsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ExecuteTool(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ExecuteTool',
            abbenay_dot_v1_dot_service__pb2.ExecuteToolRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ExecuteToolResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetConfig(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetConfig',
            abbenay_dot_v1_dot_service__pb2.GetConfigRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetConfigResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def UpdateConfig(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/UpdateConfig',
            abbenay_dot_v1_dot_service__pb2.UpdateConfigRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetConfigResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetKeyStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetKeyStatus',
            abbenay_dot_v1_dot_service__pb2.GetKeyStatusRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetKeyStatusResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListMcpServerConfigs(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListMcpServerConfigs',
            abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListMcpServerConfigsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ReconnectMcpServer(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ReconnectMcpServer',
            abbenay_dot_v1_dot_service__pb2.ReconnectMcpServerRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetSecret(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetSecret',
            abbenay_dot_v1_dot_service__pb2.GetSecretRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetSecretResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def SetSecret(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/SetSecret',
            abbenay_dot_v1_dot_service__pb2.SetSecretRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def DeleteSecret(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/DeleteSecret',
            abbenay_dot_v1_dot_service__pb2.DeleteSecretRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def ListSecrets(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/ListSecrets',
            abbenay_dot_v1_dot_service__pb2.ListSecretsRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.ListSecretsResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Register(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/Register',
            abbenay_dot_v1_dot_service__pb2.RegisterRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.RegisterResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Unregister(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/Unregister',
            abbenay_dot_v1_dot_service__pb2.UnregisterRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetStatus(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetStatus',
            abbenay_dot_v1_dot_service__pb2.GetStatusRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.DaemonStatus.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def GetConnectedWorkspaces(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/GetConnectedWorkspaces',
            abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.GetConnectedWorkspacesResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def Shutdown(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/Shutdown',
            abbenay_dot_v1_dot_service__pb2.ShutdownRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def HealthCheck(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/HealthCheck',
            abbenay_dot_v1_dot_service__pb2.HealthCheckRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.HealthCheckResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def StartWebServer(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/StartWebServer',
            abbenay_dot_v1_dot_service__pb2.StartWebServerRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.StartWebServerResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def StopWebServer(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/StopWebServer',
            abbenay_dot_v1_dot_service__pb2.StopWebServerRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.Empty.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def RegisterMcpServer(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/RegisterMcpServer',
            abbenay_dot_v1_dot_service__pb2.RegisterMcpServerRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.RegisterMcpServerResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def UnregisterMcpServer(request,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.unary_unary(
            request,
            target,
            '/abbenay.v1.Abbenay/UnregisterMcpServer',
            abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerRequest.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.UnregisterMcpServerResponse.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)

    @staticmethod
    def VSCodeStream(request_iterator,
            target,
            options=(),
            channel_credentials=None,
            call_credentials=None,
            insecure=False,
            compression=None,
            wait_for_ready=None,
            timeout=None,
            metadata=None):
        return grpc.experimental.stream_stream(
            request_iterator,
            target,
            '/abbenay.v1.Abbenay/VSCodeStream',
            abbenay_dot_v1_dot_service__pb2.VSCodeResponse.SerializeToString,
            abbenay_dot_v1_dot_service__pb2.VSCodeRequest.FromString,
            options,
            channel_credentials,
            insecure,
            call_credentials,
            compression,
            wait_for_ready,
            timeout,
            metadata,
            _registered_method=True)
