后端: 1.阶段 6 agent / memory 服务化收口 - 新增 cmd/agent 独立进程入口,承载 agent zrpc server、agent outbox relay / consumer 和运行时依赖初始化 - 补齐 services/agent/rpc 的 Chat stream 与 conversation meta/list/timeline、schedule-preview、context-stats、schedule-state unary RPC - 新增 gateway/client/agent 与 shared/contracts/agent,将 /api/v1/agent chat 和非 chat 门面切到 agent zrpc - 收缩 gateway 本地 AgentService 装配,双 RPC 开关开启时不再初始化本地 agent 编排、LLM、RAG 和 memory reader fallback - 将 backend/memory 物理迁入 services/memory,私有实现收入 internal,保留 module/model/observe 作为 memory 服务门面 - 调整 memory outbox、memory reader 和 agent 记忆渲染链路的 import 与服务边界,cmd/memory 独占 memory worker / consumer - 关闭 gateway 侧 agent outbox worker 所有权,agent relay / consumer 由 cmd/agent 独占,gateway 仅保留 HTTP/SSE 门面与迁移期开关回退 - 更新阶段 6 文档,记录 agent / memory 当前切流点、smoke 结果,以及 backend/client 与 gateway/shared 的目录收口口径
314 lines
12 KiB
Go
314 lines
12 KiB
Go
package pb
|
|
|
|
import (
|
|
context "context"
|
|
io "io"
|
|
|
|
grpc "google.golang.org/grpc"
|
|
codes "google.golang.org/grpc/codes"
|
|
status "google.golang.org/grpc/status"
|
|
)
|
|
|
|
const (
|
|
Agent_Ping_FullMethodName = "/smartflow.agent.Agent/Ping"
|
|
Agent_Chat_FullMethodName = "/smartflow.agent.Agent/Chat"
|
|
Agent_GetConversationMeta_FullMethodName = "/smartflow.agent.Agent/GetConversationMeta"
|
|
Agent_GetConversationList_FullMethodName = "/smartflow.agent.Agent/GetConversationList"
|
|
Agent_GetConversationTimeline_FullMethodName = "/smartflow.agent.Agent/GetConversationTimeline"
|
|
Agent_GetSchedulePlanPreview_FullMethodName = "/smartflow.agent.Agent/GetSchedulePlanPreview"
|
|
Agent_GetContextStats_FullMethodName = "/smartflow.agent.Agent/GetContextStats"
|
|
Agent_SaveScheduleState_FullMethodName = "/smartflow.agent.Agent/SaveScheduleState"
|
|
)
|
|
|
|
type AgentClient interface {
|
|
Ping(ctx context.Context, in *StatusResponse, opts ...grpc.CallOption) (*StatusResponse, error)
|
|
Chat(ctx context.Context, in *ChatRequest, opts ...grpc.CallOption) (Agent_ChatClient, error)
|
|
GetConversationMeta(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
GetConversationList(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
GetConversationTimeline(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
GetSchedulePlanPreview(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
GetContextStats(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
SaveScheduleState(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error)
|
|
}
|
|
|
|
type agentClient struct {
|
|
cc grpc.ClientConnInterface
|
|
}
|
|
|
|
func NewAgentClient(cc grpc.ClientConnInterface) AgentClient {
|
|
return &agentClient{cc}
|
|
}
|
|
|
|
func (c *agentClient) Ping(ctx context.Context, in *StatusResponse, opts ...grpc.CallOption) (*StatusResponse, error) {
|
|
out := new(StatusResponse)
|
|
err := c.cc.Invoke(ctx, Agent_Ping_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) Chat(ctx context.Context, in *ChatRequest, opts ...grpc.CallOption) (Agent_ChatClient, error) {
|
|
stream, err := c.cc.NewStream(ctx, &Agent_ServiceDesc.Streams[0], Agent_Chat_FullMethodName, opts...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
client := &agentChatClient{stream}
|
|
if err := client.ClientStream.SendMsg(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if err := client.ClientStream.CloseSend(); err != nil {
|
|
return nil, err
|
|
}
|
|
return client, nil
|
|
}
|
|
|
|
func (c *agentClient) GetConversationMeta(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_GetConversationMeta_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) GetConversationList(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_GetConversationList_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) GetConversationTimeline(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_GetConversationTimeline_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) GetSchedulePlanPreview(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_GetSchedulePlanPreview_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) GetContextStats(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_GetContextStats_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
func (c *agentClient) SaveScheduleState(ctx context.Context, in *JSONRequest, opts ...grpc.CallOption) (*JSONResponse, error) {
|
|
out := new(JSONResponse)
|
|
err := c.cc.Invoke(ctx, Agent_SaveScheduleState_FullMethodName, in, out, opts...)
|
|
return out, err
|
|
}
|
|
|
|
type Agent_ChatClient interface {
|
|
Recv() (*ChatChunk, error)
|
|
grpc.ClientStream
|
|
}
|
|
|
|
type agentChatClient struct {
|
|
grpc.ClientStream
|
|
}
|
|
|
|
func (x *agentChatClient) Recv() (*ChatChunk, error) {
|
|
m := new(ChatChunk)
|
|
if err := x.ClientStream.RecvMsg(m); err != nil {
|
|
if err == io.EOF {
|
|
return nil, err
|
|
}
|
|
return nil, err
|
|
}
|
|
return m, nil
|
|
}
|
|
|
|
type AgentServer interface {
|
|
Ping(context.Context, *StatusResponse) (*StatusResponse, error)
|
|
Chat(*ChatRequest, Agent_ChatServer) error
|
|
GetConversationMeta(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
GetConversationList(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
GetConversationTimeline(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
GetSchedulePlanPreview(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
GetContextStats(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
SaveScheduleState(context.Context, *JSONRequest) (*JSONResponse, error)
|
|
}
|
|
|
|
type UnimplementedAgentServer struct{}
|
|
|
|
func (UnimplementedAgentServer) Ping(context.Context, *StatusResponse) (*StatusResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) Chat(*ChatRequest, Agent_ChatServer) error {
|
|
return status.Errorf(codes.Unimplemented, "method Chat not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) GetConversationMeta(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetConversationMeta not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) GetConversationList(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetConversationList not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) GetConversationTimeline(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetConversationTimeline not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) GetSchedulePlanPreview(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetSchedulePlanPreview not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) GetContextStats(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method GetContextStats not implemented")
|
|
}
|
|
|
|
func (UnimplementedAgentServer) SaveScheduleState(context.Context, *JSONRequest) (*JSONResponse, error) {
|
|
return nil, status.Errorf(codes.Unimplemented, "method SaveScheduleState not implemented")
|
|
}
|
|
|
|
func RegisterAgentServer(s grpc.ServiceRegistrar, srv AgentServer) {
|
|
s.RegisterService(&Agent_ServiceDesc, srv)
|
|
}
|
|
|
|
type Agent_ChatServer interface {
|
|
Send(*ChatChunk) error
|
|
grpc.ServerStream
|
|
}
|
|
|
|
type agentChatServer struct {
|
|
grpc.ServerStream
|
|
}
|
|
|
|
func (x *agentChatServer) Send(m *ChatChunk) error {
|
|
return x.ServerStream.SendMsg(m)
|
|
}
|
|
|
|
func _Agent_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(StatusResponse)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).Ping(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{
|
|
Server: srv,
|
|
FullMethod: Agent_Ping_FullMethodName,
|
|
}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).Ping(ctx, req.(*StatusResponse))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_GetConversationMeta_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).GetConversationMeta(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_GetConversationMeta_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).GetConversationMeta(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_GetConversationList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).GetConversationList(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_GetConversationList_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).GetConversationList(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_GetConversationTimeline_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).GetConversationTimeline(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_GetConversationTimeline_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).GetConversationTimeline(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_GetSchedulePlanPreview_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).GetSchedulePlanPreview(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_GetSchedulePlanPreview_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).GetSchedulePlanPreview(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_GetContextStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).GetContextStats(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_GetContextStats_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).GetContextStats(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_SaveScheduleState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
|
in := new(JSONRequest)
|
|
if err := dec(in); err != nil {
|
|
return nil, err
|
|
}
|
|
if interceptor == nil {
|
|
return srv.(AgentServer).SaveScheduleState(ctx, in)
|
|
}
|
|
info := &grpc.UnaryServerInfo{Server: srv, FullMethod: Agent_SaveScheduleState_FullMethodName}
|
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
|
return srv.(AgentServer).SaveScheduleState(ctx, req.(*JSONRequest))
|
|
}
|
|
return interceptor(ctx, in, info, handler)
|
|
}
|
|
|
|
func _Agent_Chat_Handler(srv interface{}, stream grpc.ServerStream) error {
|
|
m := new(ChatRequest)
|
|
if err := stream.RecvMsg(m); err != nil {
|
|
return err
|
|
}
|
|
return srv.(AgentServer).Chat(m, &agentChatServer{stream})
|
|
}
|
|
|
|
var Agent_ServiceDesc = grpc.ServiceDesc{
|
|
ServiceName: "smartflow.agent.Agent",
|
|
HandlerType: (*AgentServer)(nil),
|
|
Methods: []grpc.MethodDesc{
|
|
{MethodName: "Ping", Handler: _Agent_Ping_Handler},
|
|
{MethodName: "GetConversationMeta", Handler: _Agent_GetConversationMeta_Handler},
|
|
{MethodName: "GetConversationList", Handler: _Agent_GetConversationList_Handler},
|
|
{MethodName: "GetConversationTimeline", Handler: _Agent_GetConversationTimeline_Handler},
|
|
{MethodName: "GetSchedulePlanPreview", Handler: _Agent_GetSchedulePlanPreview_Handler},
|
|
{MethodName: "GetContextStats", Handler: _Agent_GetContextStats_Handler},
|
|
{MethodName: "SaveScheduleState", Handler: _Agent_SaveScheduleState_Handler},
|
|
},
|
|
Streams: []grpc.StreamDesc{
|
|
{StreamName: "Chat", Handler: _Agent_Chat_Handler, ServerStreams: true},
|
|
},
|
|
Metadata: "services/agent/rpc/agent.proto",
|
|
}
|