MCPcopy
hub / github.com/kagent-dev/kagent / AddSession

Method AddSession

go/core/internal/httpserver/handlers/memory.go:72–119  ·  view source on GitHub ↗

AddSession handles POST /api/memories/sessions

(w ErrorResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

70
71// AddSession handles POST /api/memories/sessions
72func (h *MemoryHandler) AddSession(w ErrorResponseWriter, r *http.Request) {
73 log := ctrllog.FromContext(r.Context())
74 var req AddSessionMemoryRequest
75 if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
76 RespondWithError(w, http.StatusBadRequest, "Invalid request body")
77 return
78 }
79
80 if req.AgentName == "" || req.UserID == "" || len(req.Vector) == 0 {
81 RespondWithError(w, http.StatusBadRequest, "Missing required fields (agent_name, user_id, vector)")
82 return
83 }
84
85 if len(req.Vector) != memoryVectorDimension {
86 RespondWithError(w, http.StatusBadRequest, fmt.Sprintf("vector must have exactly %d dimensions, got %d", memoryVectorDimension, len(req.Vector)))
87 return
88 }
89
90 // Ensure metadata is valid JSON
91 metadata := req.Metadata
92 if len(metadata) == 0 {
93 metadata = json.RawMessage("{}")
94 }
95
96 ttlDays := req.TTLDays
97 if ttlDays <= 0 {
98 ttlDays = defaultMemoryTTLDays
99 }
100 expiresAt := time.Now().Add(time.Duration(ttlDays) * 24 * time.Hour)
101 memory := &database.Memory{
102 AgentName: req.AgentName,
103 UserID: req.UserID,
104 Content: req.Content,
105 Embedding: pgvector.NewVector(req.Vector),
106 Metadata: string(metadata),
107 ExpiresAt: &expiresAt,
108 }
109
110 if err := h.DatabaseService.StoreAgentMemory(r.Context(), memory); err != nil {
111 log.Error(err, "failed to store agent memory")
112 RespondWithError(w, http.StatusInternalServerError, fmt.Sprintf("failed to save memory: %v", err))
113 return
114 }
115
116 log.Info("added memory", "id", memory.ID, "userID", req.UserID, "agentName", req.AgentName)
117
118 RespondWithJSON(w, http.StatusCreated, map[string]string{"id": memory.ID})
119}
120
121// AddSessionMemoryBatchRequest represents the request body for adding multiple memory sessions
122type AddSessionMemoryBatchRequest struct {

Callers 1

TestMemoryHandlerFunction · 0.95

Calls 4

RespondWithErrorFunction · 0.85
RespondWithJSONFunction · 0.85
StoreAgentMemoryMethod · 0.65
ErrorMethod · 0.45

Tested by 1

TestMemoryHandlerFunction · 0.76