feat(brain): preserve memory source field

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-01 10:36:12 +00:00
parent c75911be67
commit 5c5d9c33bf
4 changed files with 9 additions and 0 deletions

View file

@ -48,6 +48,7 @@ func TestActions_HandleList_Good(t *testing.T) {
"type": "decision",
"project": "agent",
"agent_id": "cladius",
"source": "manual",
"confidence": 0.9,
"created_at": "2026-03-31T00:00:00Z",
"updated_at": "2026-03-31T00:00:00Z",
@ -78,6 +79,7 @@ func TestActions_HandleList_Good(t *testing.T) {
assert.Equal(t, 1, output.Count)
require.Len(t, output.Memories, 1)
assert.Equal(t, "mem-1", output.Memories[0].ID)
assert.Equal(t, "manual", output.Memories[0].Source)
}
func TestActions_HandleList_Bad(t *testing.T) {

View file

@ -254,6 +254,7 @@ func memoriesFromPayload(payload map[string]any) []Memory {
Type: stringField(memoryMap, "type"),
Project: stringField(memoryMap, "project"),
AgentID: stringField(memoryMap, "agent_id"),
Source: stringField(memoryMap, "source"),
CreatedAt: stringField(memoryMap, "created_at"),
UpdatedAt: stringField(memoryMap, "updated_at"),
ExpiresAt: stringField(memoryMap, "expires_at"),
@ -276,6 +277,9 @@ func memoriesFromPayload(payload map[string]any) []Memory {
}
}
if source, ok := memoryMap["source"].(string); ok {
if memory.Source == "" {
memory.Source = source
}
memory.Tags = append(memory.Tags, core.Concat("source:", source))
}
memories = append(memories, memory)

View file

@ -298,6 +298,7 @@ func TestDirect_Recall_Good_WithMemories(t *testing.T) {
assert.Equal(t, "decision", out.Memories[0].Type)
assert.Equal(t, "virgil", out.Memories[0].AgentID)
assert.Equal(t, 0.95, out.Memories[0].Confidence)
assert.Equal(t, "manual", out.Memories[0].Source)
assert.Contains(t, out.Memories[0].Tags, "source:manual")
assert.Equal(t, "mem-2", out.Memories[1].ID)
@ -463,6 +464,7 @@ func TestDirect_List_Good_WithMemories(t *testing.T) {
assert.Equal(t, "mem-list-1", out.Memories[0].ID)
assert.Equal(t, 0.73, out.Memories[0].Confidence)
assert.Equal(t, "mem-old", out.Memories[0].SupersedesID)
assert.Equal(t, "manual", out.Memories[0].Source)
assert.Equal(t, "2026-03-30T10:00:00Z", out.Memories[0].UpdatedAt)
assert.Equal(t, "2026-04-01T00:00:00Z", out.Memories[0].ExpiresAt)
assert.Contains(t, out.Memories[0].Tags, "queue")

View file

@ -78,6 +78,7 @@ type Memory struct {
Content string `json:"content"`
Tags []string `json:"tags,omitempty"`
Project string `json:"project,omitempty"`
Source string `json:"source,omitempty"`
Confidence float64 `json:"confidence"`
SupersedesID string `json:"supersedes_id,omitempty"`
ExpiresAt string `json:"expires_at,omitempty"`