(c *gin.Context)
| 1134 | } |
| 1135 | |
| 1136 | func (h *BaseHandlers) CreateMemoryAdhocNote(c *gin.Context) { |
| 1137 | var req contract.MemoryAdhocNoteRequest |
| 1138 | if err := c.ShouldBindJSON(&req); err != nil { |
| 1139 | h.respondMemoryError( |
| 1140 | c, |
| 1141 | http.StatusBadRequest, |
| 1142 | fmt.Errorf("%s: decode memory ad-hoc note request: %w", h.transportName(), err), |
| 1143 | nil, |
| 1144 | ) |
| 1145 | return |
| 1146 | } |
| 1147 | content := strings.TrimSpace(req.Content) |
| 1148 | if content == "" { |
| 1149 | err := NewMemoryValidationError(errors.New("content is required")) |
| 1150 | h.respondMemoryError(c, StatusForMemoryError(err), err, nil) |
| 1151 | return |
| 1152 | } |
| 1153 | selector := memoryAdhocSelector(req) |
| 1154 | resolved, err := h.resolveMemorySelector(c.Request.Context(), selector, true) |
| 1155 | if err != nil { |
| 1156 | h.respondMemoryError(c, StatusForMemoryError(err), err, nil) |
| 1157 | return |
| 1158 | } |
| 1159 | store, err := h.memoryRecallStoreForSelector(c.Request.Context(), resolved) |
| 1160 | if err != nil { |
| 1161 | h.respondMemoryError(c, StatusForMemoryError(err), err, nil) |
| 1162 | return |
| 1163 | } |
| 1164 | createdAt := h.nowUTC() |
| 1165 | filename := memoryAdhocFilename(req.Slug, content, createdAt) |
| 1166 | decision, err := store.ProposeCandidate(c.Request.Context(), memcontract.Candidate{ |
| 1167 | WorkspaceID: resolved.WorkspaceID, |
| 1168 | Scope: resolved.Scope, |
| 1169 | AgentName: resolved.AgentName, |
| 1170 | AgentTier: resolved.AgentTier, |
| 1171 | Origin: h.memoryOrigin(), |
| 1172 | Content: content, |
| 1173 | Frontmatter: memcontract.Header{ |
| 1174 | Name: "Ad Hoc Memory Note", |
| 1175 | Description: memoryAdhocDescription(content), |
| 1176 | Type: memoryTypeForScope(resolved.Scope), |
| 1177 | Scope: resolved.Scope, |
| 1178 | AgentName: resolved.AgentName, |
| 1179 | AgentTier: resolved.AgentTier, |
| 1180 | }, |
| 1181 | Metadata: map[string]string{ |
| 1182 | memoryMetadataTargetFilenameKey: filename, |
| 1183 | }, |
| 1184 | SubmittedAt: createdAt, |
| 1185 | }) |
| 1186 | if err != nil { |
| 1187 | h.respondMemoryError(c, StatusForMemoryError(err), err, nil) |
| 1188 | return |
| 1189 | } |
| 1190 | if decision.Op == memcontract.OpReject { |
| 1191 | h.respondDecisionRejected(c, decision) |
| 1192 | return |
| 1193 | } |
nothing calls this directly
no test coverage detected