MCPcopy Create free account
hub / github.com/diillson/chatcli / SaveSession

Method SaveSession

server/handler_session.go:245–278  ·  view source on GitHub ↗

SaveSession saves the conversation history.

(ctx context.Context, req *pb.SaveSessionRequest)

Source from the content-addressed store, hash-verified

243
244// SaveSession saves the conversation history.
245func (h *Handler) SaveSession(ctx context.Context, req *pb.SaveSessionRequest) (*pb.SaveSessionResponse, error) {
246 if h.sessionManager == nil {
247 return nil, status.Errorf(codes.Unavailable, "%s", i18n.T("server.session.mgmt_unavailable"))
248 }
249
250 if req.Name == "" {
251 return nil, status.Errorf(codes.InvalidArgument, "%s", i18n.T("server.session.name_empty"))
252 }
253
254 // Prefer v2 if client sent session_data AND store supports v2
255 if req.SessionData != nil {
256 if v2Store, ok := h.sessionManager.(SessionStoreV2); ok {
257 sd := protoSessionDataToModels(req.SessionData)
258 if err := v2Store.SaveSessionV2(req.Name, sd); err != nil {
259 return nil, status.Errorf(codes.Internal, "%s", i18n.T("server.session.save_error", err))
260 }
261 if h.sessionMetrics != nil {
262 h.sessionMetrics.OperationsTotal.WithLabelValues("save").Inc()
263 }
264 return &pb.SaveSessionResponse{Success: true}, nil
265 }
266 }
267
268 // Fallback to v1
269 history := protoToHistory(req.Messages)
270 if err := h.sessionManager.SaveSession(req.Name, history); err != nil {
271 return nil, status.Errorf(codes.Internal, "%s", i18n.T("server.session.save_error", err))
272 }
273
274 if h.sessionMetrics != nil {
275 h.sessionMetrics.OperationsTotal.WithLabelValues("save").Inc()
276 }
277 return &pb.SaveSessionResponse{Success: true}, nil
278}
279
280// DeleteSession removes a saved session.
281func (h *Handler) DeleteSession(ctx context.Context, req *pb.DeleteSessionRequest) (*pb.DeleteSessionResponse, error) {

Calls 6

TFunction · 0.92
protoToHistoryFunction · 0.85
ErrorfMethod · 0.80
protoSessionDataToModelsFunction · 0.70
SaveSessionV2Method · 0.65
SaveSessionMethod · 0.65