You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #155 (in review) adds Gemini CLI JSON. PR #169 (in review) adds Pi agent JSONL. PR #172 (in review) adds Aider markdown. PR #23 adds OpenCode SQLite (in review). There's no support yet for several other widely-used AI coding tools.
Single JSON file (not JSONL) with sessionId, projectHash, messages array
User messages: type: "user", content as list of {"text": "..."} blocks (no "type" key)
Assistant messages: type: "gemini", content as plain string
Project-scoped: sessions stored under a hash of the working directory
Why this matters
Users who switch between AI tools (or use multiple) lose cross-tool context. Mining sessions from all tools into the same palace would let MemPalace serve as a unified memory layer across the entire AI-assisted development workflow.
Implementation notes
Each format would be a new _try_* parser in normalize.py, following the existing pattern
The normalize() function already auto-detects format — new parsers slot in naturally
Summary
MemPalace normalizes 6 chat export formats in
normalize.py:conversations.jsonPR #155 (in review) adds Gemini CLI JSON. PR #169 (in review) adds Pi agent JSONL. PR #172 (in review) adds Aider markdown. PR #23 adds OpenCode SQLite (in review). There's no support yet for several other widely-used AI coding tools.
Candidate formats
~/.codex/sessions/)~/.gemini/tmp/{hash}/chats/session-*.json)~/.config/pi/agent/sessions/).aider.chat.history.md)~/.cursor/) or workspace state~/.continue/sessions/)Pi session format (from @tunnckoCore)
~/.config/pi/agent/sessions/{encoded-cwd}/{timestamp}_{uuid}.jsonl/replaced by-, wrapped in--, e.g.--home-arcka-openclaude--{ISO-timestamp}_{uuid}.jsonlsession(header),model_change,thinking_level_change,message,toolCall,compaction,branch_summary,label,custom{"type":"message", "message":{"role":"user"|"assistant"|"toolResult", "content":[{"type":"text","text":"..."}]}}Gemini CLI session format
~/.gemini/tmp/{project_hash}/chats/session-{timestamp}-{id}.jsonsessionId,projectHash,messagesarraytype: "user", content as list of{"text": "..."}blocks (no"type"key)type: "gemini", content as plain stringWhy this matters
Users who switch between AI tools (or use multiple) lose cross-tool context. Mining sessions from all tools into the same palace would let MemPalace serve as a unified memory layer across the entire AI-assisted development workflow.
Implementation notes
_try_*parser innormalize.py, following the existing patternnormalize()function already auto-detects format — new parsers slot in naturallyPrior art in this repo
_try_claude_ai_json,_try_chatgpt_json,_try_claude_code_jsonl,_try_codex_jsonl,_try_pi_jsonl,_try_gemini_json,_try_aider_md,_try_slack_json— existing/proposed parsers