-
Notifications
You must be signed in to change notification settings - Fork 0
Comparing changes
Open a pull request
base repository: graph-memory/graphmemory
base: main
head repository: graph-memory/graphmemory
compare: dev
- 9 commits
- 53 files changed
- 1 contributor
Commits on Mar 31, 2026
-
feat: add isolated store interface types for SQLite migration
Self-contained type definitions for the new storage layer replacing Graphology + JSON. Covers all 6 graphs, cross-graph links, tags, attachments, projects, team, and workspace metadata. Key design decisions: - All entity IDs numeric (autoincrement), slugs for external use - Store is fully synchronous (better-sqlite3), embeddings passed from outside - SearchQuery supports text (FTS5), embedding (sqlite-vec), or both - Cross-graph links via junction table, no proxy nodes - Tags and attachments as shared stores across all graphs - ProjectScopedStore for multi-project workspaces - TeamStore at workspace level with numeric member IDs - MetaMixin on all stores for arbitrary key-value metadata - Detail types (NoteDetail, TaskDetail, etc.) include relations + crossLinks
Configuration menu - View commit details
-
Copy full SHA for ba47643 - Browse repository at this point
Copy the full SHA ba47643View commit details -
feat: sqlite-vec PoC — verified better-sqlite3 + FTS5 + vec0
Comprehensive proof-of-concept validating SQLite stack for store: - sqlite-vec v0.1.9 loads with better-sqlite3 - WAL mode, foreign keys, CASCADE deletes - FTS5 keyword search with sync triggers - Vector KNN search (384d + 1024d) - Hybrid RRF fusion (FTS5 + vector) - JSON arrays via json_each() - Nested transactions (savepoints) + rollback - PRAGMA user_version migration pattern - File persistence (close/reopen) Benchmarks (384d/100k): insert 28µs/row, vec 36ms/search, FTS5 0.5ms/search Benchmarks (1024d/100k): insert 47µs/row, vec 99ms/search, FTS5 0.6ms/search Key findings: - sqlite-vec requires BigInt for rowid (db.defaultSafeIntegers(true)) - vec0 not cleaned by CASCADE — store must DELETE manually - 384d recommended over 1024d for large datasets (3.6x faster search)
Configuration menu - View commit details
-
Copy full SHA for e29823a - Browse repository at this point
Copy the full SHA e29823aView commit details -
Configuration menu - View commit details
-
Copy full SHA for e4cfbe3 - Browse repository at this point
Copy the full SHA e4cfbe3View commit details
Commits on Apr 1, 2026
-
feat(store): unified edges, single-table indexed stores, graph-prefix…
…ed schema Major refactoring of store types and schema: - Unified Edge type replaces Relation + CrossLink (one edges table) - Code, Docs, Files: single table per graph with kind field (no separate file/symbol tables) - Graph-prefixed table names: knowledge, tasks, epics, skills, code, docs, files - Hierarchy via edges (file→symbol, file→chunk, dir→file) instead of FK parent refs - Detail types simplified: edges: Edge[] instead of separate relation arrays - SearchResult.id changed to number (numeric IDs throughout) - All 22 tests passing
Configuration menu - View commit details
-
Copy full SHA for 5a4110c - Browse repository at this point
Copy the full SHA 5a4110cView commit details -
feat(store): unified edges, single-table indexed stores, graph-prefix…
…ed schema - Unified Edge type replaces Relation + CrossLink (one edges table) - Code, Docs, Files: single table per graph with kind field - Cleanup triggers on all entity tables (edges + attachments + vec0) - Tags as entities with edges (kind='tagged'), inline in records - Attachments: metadata only (url optional, no BLOB) - CASCADE on all project_id FKs - Search tests: keyword, vector, hybrid, project isolation - All imports use @/ alias - 31 tests passing
Configuration menu - View commit details
-
Copy full SHA for d2c4475 - Browse repository at this point
Copy the full SHA d2c4475View commit details -
feat(store): Phase 3 — Team, Projects, Attachments stores + cascade t…
…ests - SqliteTeamStore: CRUD, slug uniqueness, getBySlug, list, MetaMixin - SqliteProjectsStore: CRUD, cascade delete via FK + triggers - SqliteAttachmentsStore: metadata registry (add/remove/list), optional url - Wired team + projects in SqliteStore - Fixed cleanup triggers: code/docs/files now also clean attachments - Cascade delete tests: edges, attachments, vec0, tags all verified - 70 tests passing (31 sqlite-specific + 39 contract)
Configuration menu - View commit details
-
Copy full SHA for a00cd32 - Browse repository at this point
Copy the full SHA a00cd32View commit details -
feat(store): Phase 4 — Knowledge, Tasks, Skills stores + EntityHelpers
Knowledge, Tasks (with Epics), Skills stores with UUID slugs, version conflicts, hybrid search, tags via edges, batch fetching, and cleanup triggers. EntityHelpers extracts shared tag/attachment/edge logic.
Configuration menu - View commit details
-
Copy full SHA for 8f9aa61 - Browse repository at this point
Copy the full SHA 8f9aa61View commit details -
feat(store): Phase 5 — Code, Docs, Files indexed stores
Indexer-driven stores with updateFile/removeFile pattern, cleanup via triggers, hybrid search (FTS5+vec0 for code/docs, LIKE+vec0 for files), cross-file edge resolution, directory auto-management, and json_each symbol lookup for docs.
Configuration menu - View commit details
-
Copy full SHA for 7a47193 - Browse repository at this point
Copy the full SHA 7a47193View commit details -
feat(store): Phase 6 — ProjectScopedStore, edges, integration + audit…
… fixes ProjectScopedStore wraps all sub-stores with fixed projectId, cached via store.project(id). Full edge CRUD at both scoped and workspace levels. GraphName extended with epics/tags. Audit fixes: recursive ensureDirectory chain, minScore in all FilesStore search modes, orphaned tags cleanup in setTags, removed template literal SQL interpolation, simplified isExported check.
Configuration menu - View commit details
-
Copy full SHA for 8bf4629 - Browse repository at this point
Copy the full SHA 8bf4629View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff main...dev