[agent/codex:gpt-5.4] Implement docs/RFC-STORE.md using docs/RFC-CORE-008-AGENT-EX... #28

Merged
Virgil merged 1 commit from agent/implement-docs-rfc-store-md-using-docs-r into dev 2026-03-30 20:59:34 +00:00
2 changed files with 38 additions and 0 deletions

View file

@ -21,6 +21,14 @@ const createWorkspaceEntriesTableSQL = `CREATE TABLE IF NOT EXISTS workspace_ent
created_at INTEGER NOT NULL
)`
const createWorkspaceEntriesViewSQL = `CREATE VIEW IF NOT EXISTS entries AS
SELECT
entry_id AS id,
entry_kind AS kind,
entry_data AS data,
created_at
FROM workspace_entries`
var defaultWorkspaceStateDirectory = ".core/state"
// Workspace accumulates mutable work-in-progress entries before they are
@ -307,6 +315,10 @@ func openWorkspaceDatabase(databasePath string) (*sql.DB, error) {
workspaceDatabase.Close()
return nil, err
}
if _, err := workspaceDatabase.Exec(createWorkspaceEntriesViewSQL); err != nil {
workspaceDatabase.Close()
return nil, err
}
return workspaceDatabase, nil
}

View file

@ -39,6 +39,32 @@ func TestWorkspace_NewWorkspace_Good_CreatePutAggregateQuery(t *testing.T) {
assert.Equal(t, int64(1), rows[1]["entry_count"])
}
func TestWorkspace_Query_Good_RFCEntriesView(t *testing.T) {
useWorkspaceStateDirectory(t)
storeInstance, err := New(":memory:")
require.NoError(t, err)
defer storeInstance.Close()
workspace, err := storeInstance.NewWorkspace("scroll-session")
require.NoError(t, err)
defer workspace.Discard()
require.NoError(t, workspace.Put("like", map[string]any{"user": "@alice"}))
require.NoError(t, workspace.Put("like", map[string]any{"user": "@bob"}))
require.NoError(t, workspace.Put("profile_match", map[string]any{"user": "@charlie"}))
rows := requireResultRows(
t,
workspace.Query("SELECT kind, COUNT(*) AS entry_count FROM entries GROUP BY kind ORDER BY kind"),
)
require.Len(t, rows, 2)
assert.Equal(t, "like", rows[0]["kind"])
assert.Equal(t, int64(2), rows[0]["entry_count"])
assert.Equal(t, "profile_match", rows[1]["kind"])
assert.Equal(t, int64(1), rows[1]["entry_count"])
}
func TestWorkspace_Commit_Good_JournalAndSummary(t *testing.T) {
useWorkspaceStateDirectory(t)