// ChatCLI gRPC Service Definition
// Copyright (c) 2024 Edilson Freitas
// License: MIT

// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc             v5.29.0
// source: chatcli/v1/chatcli.proto

package chatcliv1

import (
	context "context"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.64.0 or later.
const _ = grpc.SupportPackageIsVersion9

const (
	ChatCLIService_SendPrompt_FullMethodName                = "/chatcli.v1.ChatCLIService/SendPrompt"
	ChatCLIService_StreamPrompt_FullMethodName              = "/chatcli.v1.ChatCLIService/StreamPrompt"
	ChatCLIService_InteractiveSession_FullMethodName        = "/chatcli.v1.ChatCLIService/InteractiveSession"
	ChatCLIService_ListSessions_FullMethodName              = "/chatcli.v1.ChatCLIService/ListSessions"
	ChatCLIService_LoadSession_FullMethodName               = "/chatcli.v1.ChatCLIService/LoadSession"
	ChatCLIService_SaveSession_FullMethodName               = "/chatcli.v1.ChatCLIService/SaveSession"
	ChatCLIService_DeleteSession_FullMethodName             = "/chatcli.v1.ChatCLIService/DeleteSession"
	ChatCLIService_GetServerInfo_FullMethodName             = "/chatcli.v1.ChatCLIService/GetServerInfo"
	ChatCLIService_GetWatcherStatus_FullMethodName          = "/chatcli.v1.ChatCLIService/GetWatcherStatus"
	ChatCLIService_Health_FullMethodName                    = "/chatcli.v1.ChatCLIService/Health"
	ChatCLIService_GetAlerts_FullMethodName                 = "/chatcli.v1.ChatCLIService/GetAlerts"
	ChatCLIService_AnalyzeIssue_FullMethodName              = "/chatcli.v1.ChatCLIService/AnalyzeIssue"
	ChatCLIService_AgenticStep_FullMethodName               = "/chatcli.v1.ChatCLIService/AgenticStep"
	ChatCLIService_ListRemotePlugins_FullMethodName         = "/chatcli.v1.ChatCLIService/ListRemotePlugins"
	ChatCLIService_ListRemoteAgents_FullMethodName          = "/chatcli.v1.ChatCLIService/ListRemoteAgents"
	ChatCLIService_ListRemoteSkills_FullMethodName          = "/chatcli.v1.ChatCLIService/ListRemoteSkills"
	ChatCLIService_GetAgentDefinition_FullMethodName        = "/chatcli.v1.ChatCLIService/GetAgentDefinition"
	ChatCLIService_GetSkillContent_FullMethodName           = "/chatcli.v1.ChatCLIService/GetSkillContent"
	ChatCLIService_ExecuteRemotePlugin_FullMethodName       = "/chatcli.v1.ChatCLIService/ExecuteRemotePlugin"
	ChatCLIService_DownloadPlugin_FullMethodName            = "/chatcli.v1.ChatCLIService/DownloadPlugin"
	ChatCLIService_ResolveActiveConversation_FullMethodName = "/chatcli.v1.ChatCLIService/ResolveActiveConversation"
	ChatCLIService_NewConversation_FullMethodName           = "/chatcli.v1.ChatCLIService/NewConversation"
	ChatCLIService_AppendEvent_FullMethodName               = "/chatcli.v1.ChatCLIService/AppendEvent"
	ChatCLIService_ReadConversation_FullMethodName          = "/chatcli.v1.ChatCLIService/ReadConversation"
	ChatCLIService_SubscribeConversation_FullMethodName     = "/chatcli.v1.ChatCLIService/SubscribeConversation"
	ChatCLIService_SetBinding_FullMethodName                = "/chatcli.v1.ChatCLIService/SetBinding"
	ChatCLIService_ListBindings_FullMethodName              = "/chatcli.v1.ChatCLIService/ListBindings"
)

// ChatCLIServiceClient is the client API for ChatCLIService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
//
// ChatCLIService exposes ChatCLI functionality over gRPC.
type ChatCLIServiceClient interface {
	// SendPrompt sends a single prompt and returns the LLM response (one-shot mode).
	SendPrompt(ctx context.Context, in *SendPromptRequest, opts ...grpc.CallOption) (*SendPromptResponse, error)
	// StreamPrompt sends a prompt and streams back the response chunks.
	StreamPrompt(ctx context.Context, in *StreamPromptRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamPromptResponse], error)
	// InteractiveSession opens a bidirectional stream for interactive/agent mode.
	InteractiveSession(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[SessionMessage, SessionMessage], error)
	// ListSessions returns all saved session names.
	ListSessions(ctx context.Context, in *ListSessionsRequest, opts ...grpc.CallOption) (*ListSessionsResponse, error)
	// LoadSession loads a previously saved session's message history.
	LoadSession(ctx context.Context, in *LoadSessionRequest, opts ...grpc.CallOption) (*LoadSessionResponse, error)
	// SaveSession saves the current conversation history.
	SaveSession(ctx context.Context, in *SaveSessionRequest, opts ...grpc.CallOption) (*SaveSessionResponse, error)
	// DeleteSession removes a saved session.
	DeleteSession(ctx context.Context, in *DeleteSessionRequest, opts ...grpc.CallOption) (*DeleteSessionResponse, error)
	// GetServerInfo returns server metadata (provider, model, version).
	GetServerInfo(ctx context.Context, in *GetServerInfoRequest, opts ...grpc.CallOption) (*GetServerInfoResponse, error)
	// GetWatcherStatus returns the K8s watcher status (if active).
	GetWatcherStatus(ctx context.Context, in *GetWatcherStatusRequest, opts ...grpc.CallOption) (*GetWatcherStatusResponse, error)
	// Health check for load balancers and k8s probes.
	Health(ctx context.Context, in *HealthRequest, opts ...grpc.CallOption) (*HealthResponse, error)
	// GetAlerts returns current watcher alerts (anomalies detected by the K8s watcher).
	GetAlerts(ctx context.Context, in *GetAlertsRequest, opts ...grpc.CallOption) (*GetAlertsResponse, error)
	// AnalyzeIssue uses the LLM to analyze an AIOps issue and return recommendations.
	AnalyzeIssue(ctx context.Context, in *AnalyzeIssueRequest, opts ...grpc.CallOption) (*AnalyzeIssueResponse, error)
	// AgenticStep runs one turn of the AI-driven remediation agent loop.
	AgenticStep(ctx context.Context, in *AgenticStepRequest, opts ...grpc.CallOption) (*AgenticStepResponse, error)
	// ListRemotePlugins returns all plugins installed on the server.
	ListRemotePlugins(ctx context.Context, in *ListRemotePluginsRequest, opts ...grpc.CallOption) (*ListRemotePluginsResponse, error)
	// ListRemoteAgents returns all agents available on the server.
	ListRemoteAgents(ctx context.Context, in *ListRemoteAgentsRequest, opts ...grpc.CallOption) (*ListRemoteAgentsResponse, error)
	// ListRemoteSkills returns all skills available on the server.
	ListRemoteSkills(ctx context.Context, in *ListRemoteSkillsRequest, opts ...grpc.CallOption) (*ListRemoteSkillsResponse, error)
	// GetAgentDefinition returns the full definition of a server-side agent.
	GetAgentDefinition(ctx context.Context, in *GetAgentDefinitionRequest, opts ...grpc.CallOption) (*GetAgentDefinitionResponse, error)
	// GetSkillContent returns the full content of a server-side skill.
	GetSkillContent(ctx context.Context, in *GetSkillContentRequest, opts ...grpc.CallOption) (*GetSkillContentResponse, error)
	// ExecuteRemotePlugin executes a plugin on the server and returns the output.
	ExecuteRemotePlugin(ctx context.Context, in *ExecuteRemotePluginRequest, opts ...grpc.CallOption) (*ExecuteRemotePluginResponse, error)
	// DownloadPlugin streams the plugin binary to the client for offline use.
	DownloadPlugin(ctx context.Context, in *DownloadPluginRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DownloadPluginResponse], error)
	// ResolveActiveConversation returns the principal's current conversation,
	// creating one on first contact. All channels of the same principal resolve
	// to the same conversation, giving continuity across Telegram/Slack/CLI.
	ResolveActiveConversation(ctx context.Context, in *ResolveActiveConversationRequest, opts ...grpc.CallOption) (*ResolveActiveConversationResponse, error)
	// NewConversation rotates the principal's active-conversation pointer to a
	// fresh thread (what /newsession triggers); every channel follows.
	NewConversation(ctx context.Context, in *NewConversationRequest, opts ...grpc.CallOption) (*NewConversationResponse, error)
	// AppendEvent appends one dialogue turn to a conversation's shared log.
	AppendEvent(ctx context.Context, in *AppendEventRequest, opts ...grpc.CallOption) (*AppendEventResponse, error)
	// ReadConversation returns events with seq > since_seq (for hydration/resume).
	ReadConversation(ctx context.Context, in *ReadConversationRequest, opts ...grpc.CallOption) (*ReadConversationResponse, error)
	// SubscribeConversation live-tails a conversation: backlog after since_seq,
	// then events as they are appended by any channel.
	SubscribeConversation(ctx context.Context, in *SubscribeConversationRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ConversationEvent], error)
	// SetBinding maps a channel identity (platform,user_id) to a principal.
	SetBinding(ctx context.Context, in *SetBindingRequest, opts ...grpc.CallOption) (*SetBindingResponse, error)
	// ListBindings returns channel→principal bindings (optionally filtered).
	ListBindings(ctx context.Context, in *ListBindingsRequest, opts ...grpc.CallOption) (*ListBindingsResponse, error)
}

type chatCLIServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewChatCLIServiceClient(cc grpc.ClientConnInterface) ChatCLIServiceClient {
	return &chatCLIServiceClient{cc}
}

func (c *chatCLIServiceClient) SendPrompt(ctx context.Context, in *SendPromptRequest, opts ...grpc.CallOption) (*SendPromptResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(SendPromptResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_SendPrompt_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) StreamPrompt(ctx context.Context, in *StreamPromptRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[StreamPromptResponse], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ChatCLIService_ServiceDesc.Streams[0], ChatCLIService_StreamPrompt_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[StreamPromptRequest, StreamPromptResponse]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_StreamPromptClient = grpc.ServerStreamingClient[StreamPromptResponse]

func (c *chatCLIServiceClient) InteractiveSession(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[SessionMessage, SessionMessage], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ChatCLIService_ServiceDesc.Streams[1], ChatCLIService_InteractiveSession_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[SessionMessage, SessionMessage]{ClientStream: stream}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_InteractiveSessionClient = grpc.BidiStreamingClient[SessionMessage, SessionMessage]

func (c *chatCLIServiceClient) ListSessions(ctx context.Context, in *ListSessionsRequest, opts ...grpc.CallOption) (*ListSessionsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ListSessionsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ListSessions_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) LoadSession(ctx context.Context, in *LoadSessionRequest, opts ...grpc.CallOption) (*LoadSessionResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(LoadSessionResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_LoadSession_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) SaveSession(ctx context.Context, in *SaveSessionRequest, opts ...grpc.CallOption) (*SaveSessionResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(SaveSessionResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_SaveSession_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) DeleteSession(ctx context.Context, in *DeleteSessionRequest, opts ...grpc.CallOption) (*DeleteSessionResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(DeleteSessionResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_DeleteSession_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) GetServerInfo(ctx context.Context, in *GetServerInfoRequest, opts ...grpc.CallOption) (*GetServerInfoResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GetServerInfoResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_GetServerInfo_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) GetWatcherStatus(ctx context.Context, in *GetWatcherStatusRequest, opts ...grpc.CallOption) (*GetWatcherStatusResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GetWatcherStatusResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_GetWatcherStatus_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) Health(ctx context.Context, in *HealthRequest, opts ...grpc.CallOption) (*HealthResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(HealthResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_Health_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) GetAlerts(ctx context.Context, in *GetAlertsRequest, opts ...grpc.CallOption) (*GetAlertsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GetAlertsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_GetAlerts_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) AnalyzeIssue(ctx context.Context, in *AnalyzeIssueRequest, opts ...grpc.CallOption) (*AnalyzeIssueResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(AnalyzeIssueResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_AnalyzeIssue_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) AgenticStep(ctx context.Context, in *AgenticStepRequest, opts ...grpc.CallOption) (*AgenticStepResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(AgenticStepResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_AgenticStep_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ListRemotePlugins(ctx context.Context, in *ListRemotePluginsRequest, opts ...grpc.CallOption) (*ListRemotePluginsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ListRemotePluginsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ListRemotePlugins_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ListRemoteAgents(ctx context.Context, in *ListRemoteAgentsRequest, opts ...grpc.CallOption) (*ListRemoteAgentsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ListRemoteAgentsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ListRemoteAgents_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ListRemoteSkills(ctx context.Context, in *ListRemoteSkillsRequest, opts ...grpc.CallOption) (*ListRemoteSkillsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ListRemoteSkillsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ListRemoteSkills_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) GetAgentDefinition(ctx context.Context, in *GetAgentDefinitionRequest, opts ...grpc.CallOption) (*GetAgentDefinitionResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GetAgentDefinitionResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_GetAgentDefinition_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) GetSkillContent(ctx context.Context, in *GetSkillContentRequest, opts ...grpc.CallOption) (*GetSkillContentResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(GetSkillContentResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_GetSkillContent_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ExecuteRemotePlugin(ctx context.Context, in *ExecuteRemotePluginRequest, opts ...grpc.CallOption) (*ExecuteRemotePluginResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ExecuteRemotePluginResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ExecuteRemotePlugin_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) DownloadPlugin(ctx context.Context, in *DownloadPluginRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[DownloadPluginResponse], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ChatCLIService_ServiceDesc.Streams[2], ChatCLIService_DownloadPlugin_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[DownloadPluginRequest, DownloadPluginResponse]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_DownloadPluginClient = grpc.ServerStreamingClient[DownloadPluginResponse]

func (c *chatCLIServiceClient) ResolveActiveConversation(ctx context.Context, in *ResolveActiveConversationRequest, opts ...grpc.CallOption) (*ResolveActiveConversationResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ResolveActiveConversationResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ResolveActiveConversation_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) NewConversation(ctx context.Context, in *NewConversationRequest, opts ...grpc.CallOption) (*NewConversationResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(NewConversationResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_NewConversation_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) AppendEvent(ctx context.Context, in *AppendEventRequest, opts ...grpc.CallOption) (*AppendEventResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(AppendEventResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_AppendEvent_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ReadConversation(ctx context.Context, in *ReadConversationRequest, opts ...grpc.CallOption) (*ReadConversationResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ReadConversationResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ReadConversation_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) SubscribeConversation(ctx context.Context, in *SubscribeConversationRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ConversationEvent], error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	stream, err := c.cc.NewStream(ctx, &ChatCLIService_ServiceDesc.Streams[3], ChatCLIService_SubscribeConversation_FullMethodName, cOpts...)
	if err != nil {
		return nil, err
	}
	x := &grpc.GenericClientStream[SubscribeConversationRequest, ConversationEvent]{ClientStream: stream}
	if err := x.ClientStream.SendMsg(in); err != nil {
		return nil, err
	}
	if err := x.ClientStream.CloseSend(); err != nil {
		return nil, err
	}
	return x, nil
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_SubscribeConversationClient = grpc.ServerStreamingClient[ConversationEvent]

func (c *chatCLIServiceClient) SetBinding(ctx context.Context, in *SetBindingRequest, opts ...grpc.CallOption) (*SetBindingResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(SetBindingResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_SetBinding_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *chatCLIServiceClient) ListBindings(ctx context.Context, in *ListBindingsRequest, opts ...grpc.CallOption) (*ListBindingsResponse, error) {
	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
	out := new(ListBindingsResponse)
	err := c.cc.Invoke(ctx, ChatCLIService_ListBindings_FullMethodName, in, out, cOpts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// ChatCLIServiceServer is the server API for ChatCLIService service.
// All implementations must embed UnimplementedChatCLIServiceServer
// for forward compatibility.
//
// ChatCLIService exposes ChatCLI functionality over gRPC.
type ChatCLIServiceServer interface {
	// SendPrompt sends a single prompt and returns the LLM response (one-shot mode).
	SendPrompt(context.Context, *SendPromptRequest) (*SendPromptResponse, error)
	// StreamPrompt sends a prompt and streams back the response chunks.
	StreamPrompt(*StreamPromptRequest, grpc.ServerStreamingServer[StreamPromptResponse]) error
	// InteractiveSession opens a bidirectional stream for interactive/agent mode.
	InteractiveSession(grpc.BidiStreamingServer[SessionMessage, SessionMessage]) error
	// ListSessions returns all saved session names.
	ListSessions(context.Context, *ListSessionsRequest) (*ListSessionsResponse, error)
	// LoadSession loads a previously saved session's message history.
	LoadSession(context.Context, *LoadSessionRequest) (*LoadSessionResponse, error)
	// SaveSession saves the current conversation history.
	SaveSession(context.Context, *SaveSessionRequest) (*SaveSessionResponse, error)
	// DeleteSession removes a saved session.
	DeleteSession(context.Context, *DeleteSessionRequest) (*DeleteSessionResponse, error)
	// GetServerInfo returns server metadata (provider, model, version).
	GetServerInfo(context.Context, *GetServerInfoRequest) (*GetServerInfoResponse, error)
	// GetWatcherStatus returns the K8s watcher status (if active).
	GetWatcherStatus(context.Context, *GetWatcherStatusRequest) (*GetWatcherStatusResponse, error)
	// Health check for load balancers and k8s probes.
	Health(context.Context, *HealthRequest) (*HealthResponse, error)
	// GetAlerts returns current watcher alerts (anomalies detected by the K8s watcher).
	GetAlerts(context.Context, *GetAlertsRequest) (*GetAlertsResponse, error)
	// AnalyzeIssue uses the LLM to analyze an AIOps issue and return recommendations.
	AnalyzeIssue(context.Context, *AnalyzeIssueRequest) (*AnalyzeIssueResponse, error)
	// AgenticStep runs one turn of the AI-driven remediation agent loop.
	AgenticStep(context.Context, *AgenticStepRequest) (*AgenticStepResponse, error)
	// ListRemotePlugins returns all plugins installed on the server.
	ListRemotePlugins(context.Context, *ListRemotePluginsRequest) (*ListRemotePluginsResponse, error)
	// ListRemoteAgents returns all agents available on the server.
	ListRemoteAgents(context.Context, *ListRemoteAgentsRequest) (*ListRemoteAgentsResponse, error)
	// ListRemoteSkills returns all skills available on the server.
	ListRemoteSkills(context.Context, *ListRemoteSkillsRequest) (*ListRemoteSkillsResponse, error)
	// GetAgentDefinition returns the full definition of a server-side agent.
	GetAgentDefinition(context.Context, *GetAgentDefinitionRequest) (*GetAgentDefinitionResponse, error)
	// GetSkillContent returns the full content of a server-side skill.
	GetSkillContent(context.Context, *GetSkillContentRequest) (*GetSkillContentResponse, error)
	// ExecuteRemotePlugin executes a plugin on the server and returns the output.
	ExecuteRemotePlugin(context.Context, *ExecuteRemotePluginRequest) (*ExecuteRemotePluginResponse, error)
	// DownloadPlugin streams the plugin binary to the client for offline use.
	DownloadPlugin(*DownloadPluginRequest, grpc.ServerStreamingServer[DownloadPluginResponse]) error
	// ResolveActiveConversation returns the principal's current conversation,
	// creating one on first contact. All channels of the same principal resolve
	// to the same conversation, giving continuity across Telegram/Slack/CLI.
	ResolveActiveConversation(context.Context, *ResolveActiveConversationRequest) (*ResolveActiveConversationResponse, error)
	// NewConversation rotates the principal's active-conversation pointer to a
	// fresh thread (what /newsession triggers); every channel follows.
	NewConversation(context.Context, *NewConversationRequest) (*NewConversationResponse, error)
	// AppendEvent appends one dialogue turn to a conversation's shared log.
	AppendEvent(context.Context, *AppendEventRequest) (*AppendEventResponse, error)
	// ReadConversation returns events with seq > since_seq (for hydration/resume).
	ReadConversation(context.Context, *ReadConversationRequest) (*ReadConversationResponse, error)
	// SubscribeConversation live-tails a conversation: backlog after since_seq,
	// then events as they are appended by any channel.
	SubscribeConversation(*SubscribeConversationRequest, grpc.ServerStreamingServer[ConversationEvent]) error
	// SetBinding maps a channel identity (platform,user_id) to a principal.
	SetBinding(context.Context, *SetBindingRequest) (*SetBindingResponse, error)
	// ListBindings returns channel→principal bindings (optionally filtered).
	ListBindings(context.Context, *ListBindingsRequest) (*ListBindingsResponse, error)
	mustEmbedUnimplementedChatCLIServiceServer()
}

// UnimplementedChatCLIServiceServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedChatCLIServiceServer struct{}

func (UnimplementedChatCLIServiceServer) SendPrompt(context.Context, *SendPromptRequest) (*SendPromptResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SendPrompt not implemented")
}
func (UnimplementedChatCLIServiceServer) StreamPrompt(*StreamPromptRequest, grpc.ServerStreamingServer[StreamPromptResponse]) error {
	return status.Errorf(codes.Unimplemented, "method StreamPrompt not implemented")
}
func (UnimplementedChatCLIServiceServer) InteractiveSession(grpc.BidiStreamingServer[SessionMessage, SessionMessage]) error {
	return status.Errorf(codes.Unimplemented, "method InteractiveSession not implemented")
}
func (UnimplementedChatCLIServiceServer) ListSessions(context.Context, *ListSessionsRequest) (*ListSessionsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListSessions not implemented")
}
func (UnimplementedChatCLIServiceServer) LoadSession(context.Context, *LoadSessionRequest) (*LoadSessionResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method LoadSession not implemented")
}
func (UnimplementedChatCLIServiceServer) SaveSession(context.Context, *SaveSessionRequest) (*SaveSessionResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SaveSession not implemented")
}
func (UnimplementedChatCLIServiceServer) DeleteSession(context.Context, *DeleteSessionRequest) (*DeleteSessionResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteSession not implemented")
}
func (UnimplementedChatCLIServiceServer) GetServerInfo(context.Context, *GetServerInfoRequest) (*GetServerInfoResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetServerInfo not implemented")
}
func (UnimplementedChatCLIServiceServer) GetWatcherStatus(context.Context, *GetWatcherStatusRequest) (*GetWatcherStatusResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetWatcherStatus not implemented")
}
func (UnimplementedChatCLIServiceServer) Health(context.Context, *HealthRequest) (*HealthResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Health not implemented")
}
func (UnimplementedChatCLIServiceServer) GetAlerts(context.Context, *GetAlertsRequest) (*GetAlertsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAlerts not implemented")
}
func (UnimplementedChatCLIServiceServer) AnalyzeIssue(context.Context, *AnalyzeIssueRequest) (*AnalyzeIssueResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AnalyzeIssue not implemented")
}
func (UnimplementedChatCLIServiceServer) AgenticStep(context.Context, *AgenticStepRequest) (*AgenticStepResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AgenticStep not implemented")
}
func (UnimplementedChatCLIServiceServer) ListRemotePlugins(context.Context, *ListRemotePluginsRequest) (*ListRemotePluginsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRemotePlugins not implemented")
}
func (UnimplementedChatCLIServiceServer) ListRemoteAgents(context.Context, *ListRemoteAgentsRequest) (*ListRemoteAgentsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRemoteAgents not implemented")
}
func (UnimplementedChatCLIServiceServer) ListRemoteSkills(context.Context, *ListRemoteSkillsRequest) (*ListRemoteSkillsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRemoteSkills not implemented")
}
func (UnimplementedChatCLIServiceServer) GetAgentDefinition(context.Context, *GetAgentDefinitionRequest) (*GetAgentDefinitionResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetAgentDefinition not implemented")
}
func (UnimplementedChatCLIServiceServer) GetSkillContent(context.Context, *GetSkillContentRequest) (*GetSkillContentResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetSkillContent not implemented")
}
func (UnimplementedChatCLIServiceServer) ExecuteRemotePlugin(context.Context, *ExecuteRemotePluginRequest) (*ExecuteRemotePluginResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ExecuteRemotePlugin not implemented")
}
func (UnimplementedChatCLIServiceServer) DownloadPlugin(*DownloadPluginRequest, grpc.ServerStreamingServer[DownloadPluginResponse]) error {
	return status.Errorf(codes.Unimplemented, "method DownloadPlugin not implemented")
}
func (UnimplementedChatCLIServiceServer) ResolveActiveConversation(context.Context, *ResolveActiveConversationRequest) (*ResolveActiveConversationResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ResolveActiveConversation not implemented")
}
func (UnimplementedChatCLIServiceServer) NewConversation(context.Context, *NewConversationRequest) (*NewConversationResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method NewConversation not implemented")
}
func (UnimplementedChatCLIServiceServer) AppendEvent(context.Context, *AppendEventRequest) (*AppendEventResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AppendEvent not implemented")
}
func (UnimplementedChatCLIServiceServer) ReadConversation(context.Context, *ReadConversationRequest) (*ReadConversationResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ReadConversation not implemented")
}
func (UnimplementedChatCLIServiceServer) SubscribeConversation(*SubscribeConversationRequest, grpc.ServerStreamingServer[ConversationEvent]) error {
	return status.Errorf(codes.Unimplemented, "method SubscribeConversation not implemented")
}
func (UnimplementedChatCLIServiceServer) SetBinding(context.Context, *SetBindingRequest) (*SetBindingResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SetBinding not implemented")
}
func (UnimplementedChatCLIServiceServer) ListBindings(context.Context, *ListBindingsRequest) (*ListBindingsResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListBindings not implemented")
}
func (UnimplementedChatCLIServiceServer) mustEmbedUnimplementedChatCLIServiceServer() {}
func (UnimplementedChatCLIServiceServer) testEmbeddedByValue()                        {}

// UnsafeChatCLIServiceServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to ChatCLIServiceServer will
// result in compilation errors.
type UnsafeChatCLIServiceServer interface {
	mustEmbedUnimplementedChatCLIServiceServer()
}

func RegisterChatCLIServiceServer(s grpc.ServiceRegistrar, srv ChatCLIServiceServer) {
	// If the following call pancis, it indicates UnimplementedChatCLIServiceServer was
	// embedded by pointer and is nil.  This will cause panics if an
	// unimplemented method is ever invoked, so we test this at initialization
	// time to prevent it from happening at runtime later due to I/O.
	if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
		t.testEmbeddedByValue()
	}
	s.RegisterService(&ChatCLIService_ServiceDesc, srv)
}

func _ChatCLIService_SendPrompt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SendPromptRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).SendPrompt(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_SendPrompt_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).SendPrompt(ctx, req.(*SendPromptRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_StreamPrompt_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(StreamPromptRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ChatCLIServiceServer).StreamPrompt(m, &grpc.GenericServerStream[StreamPromptRequest, StreamPromptResponse]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_StreamPromptServer = grpc.ServerStreamingServer[StreamPromptResponse]

func _ChatCLIService_InteractiveSession_Handler(srv interface{}, stream grpc.ServerStream) error {
	return srv.(ChatCLIServiceServer).InteractiveSession(&grpc.GenericServerStream[SessionMessage, SessionMessage]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_InteractiveSessionServer = grpc.BidiStreamingServer[SessionMessage, SessionMessage]

func _ChatCLIService_ListSessions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListSessionsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ListSessions(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ListSessions_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ListSessions(ctx, req.(*ListSessionsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_LoadSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(LoadSessionRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).LoadSession(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_LoadSession_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).LoadSession(ctx, req.(*LoadSessionRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_SaveSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SaveSessionRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).SaveSession(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_SaveSession_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).SaveSession(ctx, req.(*SaveSessionRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_DeleteSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(DeleteSessionRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).DeleteSession(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_DeleteSession_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).DeleteSession(ctx, req.(*DeleteSessionRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_GetServerInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetServerInfoRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).GetServerInfo(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_GetServerInfo_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).GetServerInfo(ctx, req.(*GetServerInfoRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_GetWatcherStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetWatcherStatusRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).GetWatcherStatus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_GetWatcherStatus_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).GetWatcherStatus(ctx, req.(*GetWatcherStatusRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_Health_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(HealthRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).Health(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_Health_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).Health(ctx, req.(*HealthRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_GetAlerts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAlertsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).GetAlerts(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_GetAlerts_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).GetAlerts(ctx, req.(*GetAlertsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_AnalyzeIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AnalyzeIssueRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).AnalyzeIssue(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_AnalyzeIssue_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).AnalyzeIssue(ctx, req.(*AnalyzeIssueRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_AgenticStep_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AgenticStepRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).AgenticStep(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_AgenticStep_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).AgenticStep(ctx, req.(*AgenticStepRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ListRemotePlugins_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRemotePluginsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ListRemotePlugins(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ListRemotePlugins_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ListRemotePlugins(ctx, req.(*ListRemotePluginsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ListRemoteAgents_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRemoteAgentsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ListRemoteAgents(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ListRemoteAgents_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ListRemoteAgents(ctx, req.(*ListRemoteAgentsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ListRemoteSkills_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListRemoteSkillsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ListRemoteSkills(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ListRemoteSkills_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ListRemoteSkills(ctx, req.(*ListRemoteSkillsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_GetAgentDefinition_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetAgentDefinitionRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).GetAgentDefinition(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_GetAgentDefinition_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).GetAgentDefinition(ctx, req.(*GetAgentDefinitionRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_GetSkillContent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(GetSkillContentRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).GetSkillContent(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_GetSkillContent_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).GetSkillContent(ctx, req.(*GetSkillContentRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ExecuteRemotePlugin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ExecuteRemotePluginRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ExecuteRemotePlugin(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ExecuteRemotePlugin_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ExecuteRemotePlugin(ctx, req.(*ExecuteRemotePluginRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_DownloadPlugin_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(DownloadPluginRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ChatCLIServiceServer).DownloadPlugin(m, &grpc.GenericServerStream[DownloadPluginRequest, DownloadPluginResponse]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_DownloadPluginServer = grpc.ServerStreamingServer[DownloadPluginResponse]

func _ChatCLIService_ResolveActiveConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ResolveActiveConversationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ResolveActiveConversation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ResolveActiveConversation_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ResolveActiveConversation(ctx, req.(*ResolveActiveConversationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_NewConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(NewConversationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).NewConversation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_NewConversation_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).NewConversation(ctx, req.(*NewConversationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_AppendEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(AppendEventRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).AppendEvent(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_AppendEvent_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).AppendEvent(ctx, req.(*AppendEventRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ReadConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ReadConversationRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ReadConversation(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ReadConversation_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ReadConversation(ctx, req.(*ReadConversationRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_SubscribeConversation_Handler(srv interface{}, stream grpc.ServerStream) error {
	m := new(SubscribeConversationRequest)
	if err := stream.RecvMsg(m); err != nil {
		return err
	}
	return srv.(ChatCLIServiceServer).SubscribeConversation(m, &grpc.GenericServerStream[SubscribeConversationRequest, ConversationEvent]{ServerStream: stream})
}

// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.
type ChatCLIService_SubscribeConversationServer = grpc.ServerStreamingServer[ConversationEvent]

func _ChatCLIService_SetBinding_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SetBindingRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).SetBinding(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_SetBinding_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).SetBinding(ctx, req.(*SetBindingRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _ChatCLIService_ListBindings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(ListBindingsRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(ChatCLIServiceServer).ListBindings(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: ChatCLIService_ListBindings_FullMethodName,
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(ChatCLIServiceServer).ListBindings(ctx, req.(*ListBindingsRequest))
	}
	return interceptor(ctx, in, info, handler)
}

// ChatCLIService_ServiceDesc is the grpc.ServiceDesc for ChatCLIService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var ChatCLIService_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "chatcli.v1.ChatCLIService",
	HandlerType: (*ChatCLIServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "SendPrompt",
			Handler:    _ChatCLIService_SendPrompt_Handler,
		},
		{
			MethodName: "ListSessions",
			Handler:    _ChatCLIService_ListSessions_Handler,
		},
		{
			MethodName: "LoadSession",
			Handler:    _ChatCLIService_LoadSession_Handler,
		},
		{
			MethodName: "SaveSession",
			Handler:    _ChatCLIService_SaveSession_Handler,
		},
		{
			MethodName: "DeleteSession",
			Handler:    _ChatCLIService_DeleteSession_Handler,
		},
		{
			MethodName: "GetServerInfo",
			Handler:    _ChatCLIService_GetServerInfo_Handler,
		},
		{
			MethodName: "GetWatcherStatus",
			Handler:    _ChatCLIService_GetWatcherStatus_Handler,
		},
		{
			MethodName: "Health",
			Handler:    _ChatCLIService_Health_Handler,
		},
		{
			MethodName: "GetAlerts",
			Handler:    _ChatCLIService_GetAlerts_Handler,
		},
		{
			MethodName: "AnalyzeIssue",
			Handler:    _ChatCLIService_AnalyzeIssue_Handler,
		},
		{
			MethodName: "AgenticStep",
			Handler:    _ChatCLIService_AgenticStep_Handler,
		},
		{
			MethodName: "ListRemotePlugins",
			Handler:    _ChatCLIService_ListRemotePlugins_Handler,
		},
		{
			MethodName: "ListRemoteAgents",
			Handler:    _ChatCLIService_ListRemoteAgents_Handler,
		},
		{
			MethodName: "ListRemoteSkills",
			Handler:    _ChatCLIService_ListRemoteSkills_Handler,
		},
		{
			MethodName: "GetAgentDefinition",
			Handler:    _ChatCLIService_GetAgentDefinition_Handler,
		},
		{
			MethodName: "GetSkillContent",
			Handler:    _ChatCLIService_GetSkillContent_Handler,
		},
		{
			MethodName: "ExecuteRemotePlugin",
			Handler:    _ChatCLIService_ExecuteRemotePlugin_Handler,
		},
		{
			MethodName: "ResolveActiveConversation",
			Handler:    _ChatCLIService_ResolveActiveConversation_Handler,
		},
		{
			MethodName: "NewConversation",
			Handler:    _ChatCLIService_NewConversation_Handler,
		},
		{
			MethodName: "AppendEvent",
			Handler:    _ChatCLIService_AppendEvent_Handler,
		},
		{
			MethodName: "ReadConversation",
			Handler:    _ChatCLIService_ReadConversation_Handler,
		},
		{
			MethodName: "SetBinding",
			Handler:    _ChatCLIService_SetBinding_Handler,
		},
		{
			MethodName: "ListBindings",
			Handler:    _ChatCLIService_ListBindings_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamPrompt",
			Handler:       _ChatCLIService_StreamPrompt_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "InteractiveSession",
			Handler:       _ChatCLIService_InteractiveSession_Handler,
			ServerStreams: true,
			ClientStreams: true,
		},
		{
			StreamName:    "DownloadPlugin",
			Handler:       _ChatCLIService_DownloadPlugin_Handler,
			ServerStreams: true,
		},
		{
			StreamName:    "SubscribeConversation",
			Handler:       _ChatCLIService_SubscribeConversation_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "chatcli/v1/chatcli.proto",
}
