From 5c5d9c33bf9e9fc0afe52158b705b2b62976cff4 Mon Sep 17 00:00:00 2001 From: Virgil Date: Wed, 1 Apr 2026 10:36:12 +0000 Subject: [PATCH] feat(brain): preserve memory source field Co-Authored-By: Virgil --- pkg/brain/actions_test.go | 2 ++ pkg/brain/direct.go | 4 ++++ pkg/brain/direct_test.go | 2 ++ pkg/brain/tools.go | 1 + 4 files changed, 9 insertions(+) diff --git a/pkg/brain/actions_test.go b/pkg/brain/actions_test.go index 0a8f9fb..873f500 100644 --- a/pkg/brain/actions_test.go +++ b/pkg/brain/actions_test.go @@ -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) { diff --git a/pkg/brain/direct.go b/pkg/brain/direct.go index cc5c98e..368f147 100644 --- a/pkg/brain/direct.go +++ b/pkg/brain/direct.go @@ -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) diff --git a/pkg/brain/direct_test.go b/pkg/brain/direct_test.go index ec98bfc..b961981 100644 --- a/pkg/brain/direct_test.go +++ b/pkg/brain/direct_test.go @@ -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") diff --git a/pkg/brain/tools.go b/pkg/brain/tools.go index 3fc18a1..3393ec3 100644 --- a/pkg/brain/tools.go +++ b/pkg/brain/tools.go @@ -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"`