MCPcopy Create free account
hub / github.com/compozy/agh / CreateMemoryAdhocNote

Method CreateMemoryAdhocNote

internal/api/core/memory.go:1136–1199  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

1134}
1135
1136func (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 }

Callers

nothing calls this directly

Calls 15

respondMemoryErrorMethod · 0.95
transportNameMethod · 0.95
resolveMemorySelectorMethod · 0.95
nowUTCMethod · 0.95
memoryOriginMethod · 0.95
NewMemoryValidationErrorFunction · 0.85
StatusForMemoryErrorFunction · 0.85
memoryAdhocSelectorFunction · 0.85
memoryAdhocFilenameFunction · 0.85
memoryAdhocDescriptionFunction · 0.85

Tested by

no test coverage detected