[agent/codex:gpt-5.4-mini] Read docs/RFC-STORE.md fully. Find features described in the... #149

Merged
Virgil merged 1 commit from agent/read---spec-code-core-go-store-rfc-md-fu into dev 2026-04-04 14:16:06 +00:00
4 changed files with 74 additions and 3 deletions

View file

@ -89,8 +89,8 @@ func (storeInstance *Store) CommitToJournal(measurement string, fields map[strin
Value: map[string]any{
"bucket": storeInstance.journalBucket(),
"measurement": measurement,
"fields": fields,
"tags": tags,
"fields": cloneAnyMap(fields),
"tags": cloneStringMap(tags),
"committed_at": committedAt,
},
OK: true,
@ -429,3 +429,25 @@ func normaliseRowValue(value any) any {
return typedValue
}
}
func cloneAnyMap(input map[string]any) map[string]any {
if input == nil {
return map[string]any{}
}
cloned := make(map[string]any, len(input))
for key, value := range input {
cloned[key] = value
}
return cloned
}
func cloneStringMap(input map[string]string) map[string]string {
if input == nil {
return map[string]string{}
}
cloned := make(map[string]string, len(input))
for key, value := range input {
cloned[key] = value
}
return cloned
}

View file

@ -35,6 +35,32 @@ func TestJournal_CommitToJournal_Good_WithQueryJournalSQL(t *testing.T) {
assert.Equal(t, "session-b", tags["workspace"])
}
func TestJournal_CommitToJournal_Good_ResultCopiesInputMaps(t *testing.T) {
storeInstance, err := New(":memory:", WithJournal("http://127.0.0.1:8086", "core", "events"))
require.NoError(t, err)
defer storeInstance.Close()
fields := map[string]any{"like": 4}
tags := map[string]string{"workspace": "session-a"}
result := storeInstance.CommitToJournal("session-a", fields, tags)
require.True(t, result.OK, "journal commit failed: %v", result.Value)
fields["like"] = 99
tags["workspace"] = "session-b"
value, ok := result.Value.(map[string]any)
require.True(t, ok, "unexpected result type: %T", result.Value)
resultFields, ok := value["fields"].(map[string]any)
require.True(t, ok, "unexpected fields type: %T", value["fields"])
assert.Equal(t, 4, resultFields["like"])
resultTags, ok := value["tags"].(map[string]string)
require.True(t, ok, "unexpected tags type: %T", value["tags"])
assert.Equal(t, "session-a", resultTags["workspace"])
}
func TestJournal_QueryJournal_Good_RawSQLWithCTE(t *testing.T) {
storeInstance, err := New(":memory:", WithJournal("http://127.0.0.1:8086", "core", "events"))
require.NoError(t, err)

View file

@ -306,7 +306,7 @@ func (workspace *Workspace) Commit() core.Result {
if err := workspace.closeAndRemoveFiles(); err != nil {
return core.Result{Value: err, OK: false}
}
return core.Result{Value: fields, OK: true}
return core.Result{Value: cloneAnyMap(fields), OK: true}
}
// Usage example: `workspace.Discard()`

View file

@ -125,6 +125,29 @@ func TestWorkspace_Commit_Good_JournalAndSummary(t *testing.T) {
assert.Equal(t, "scroll-session", tags["workspace"])
}
func TestWorkspace_Commit_Good_ResultCopiesAggregatedMap(t *testing.T) {
useWorkspaceStateDirectory(t)
storeInstance, err := New(":memory:", WithJournal("http://127.0.0.1:8086", "core", "events"))
require.NoError(t, err)
defer storeInstance.Close()
workspace, err := storeInstance.NewWorkspace("scroll-session")
require.NoError(t, err)
aggregateSource := map[string]any{"like": 1}
require.NoError(t, workspace.Put("like", aggregateSource))
result := workspace.Commit()
require.True(t, result.OK, "workspace commit failed: %v", result.Value)
aggregateSource["like"] = 99
value, ok := result.Value.(map[string]any)
require.True(t, ok, "unexpected result type: %T", result.Value)
assert.Equal(t, 1, value["like"])
}
func TestWorkspace_Commit_Good_EmitsSummaryEvent(t *testing.T) {
useWorkspaceStateDirectory(t)