Files
zesdex/docs/CODEMAPS/data.md
T

2.4 KiB

Data / Persistence Layer

Storage Overview

Base directory: ~/.config/zesdex/ (via dirs::data_dir())

~/.config/zesdex/
├── settings.json        # User preferences (provider, model, tokens)
├── app_config.json      # Provider definitions (API base, auth, models)
├── agents/              # Global agent definitions
│   └── *.json
├── memory/              # Persistent lesson/reference store
│   └── *.md             # Markdown with YAML frontmatter
├── sessions/            # Per-session data
│   └── <session-uuid>/
│       ├── editlog.json      # Edit history
│       ├── msglog.db         # SQLite message log
│       ├── transcript.json   # Chat transcript
│       ├── session.json      # Session metadata
│       ├── agents.json       # Session-local agent defs
│       └── snapshot.dat      # State snapshot (daemon mode)
├── run/                 # Unix domain sockets
│   └── zesdex-*.sock
└── store.json           # Legacy session index

Key Files

File Lines Role
src/model/store.rs ~50 File-system storage (ensure_dirs, base_dir resolution)
src/model/settings.rs ~60 Settings — load/save JSON, API keys map
src/model/app_config.rs ~80 AppConfig — provider definitions, model roles, auth
src/model/memory.rs 332 Memory CRUD — markdown files with frontmatter
src/model/editlog.rs 121 Edit log — append-only JSON array
src/model/msglog/ 4 files SQLite-backed message log (schema, query, blobs)
src/model/session.rs ~60 Session CRUD, listing, archival
src/model/session_lock.rs ~50 flock-based session lock
src/model/agent_def/ 3 files Agent definitions (builtin, global, session-local)

Key Patterns

  • No ORM — raw JSON files + SQLite via rusqlite
  • settings.json — loaded at startup, saved on quit / mode switches
  • Memory format — Markdown files with YAML frontmatter (---\nname: ...\ndescription: ...\n---\ncontent)
  • Edit log — append-only, stores (file, old, new, timestamp, tool)
  • Session locking — flock-based, prevents concurrent access to same session dir
  • Message log — SQLite with attached blobs for tool arguments/outputs