Skip to content

Commit e23924e

Browse files
committed
add gemini support
1 parent 18380ac commit e23924e

16 files changed

Lines changed: 2263 additions & 7 deletions

.ai/history/pascal/codex/.2026-03-02-1223-i-added-a-new-symlink-in-symlinks-to-gemini.-can-you-search.json

Lines changed: 1136 additions & 0 deletions
Large diffs are not rendered by default.

.ai/history/pascal/codex/2026-03-02-1223-i-added-a-new-symlink-in-symlinks-to-gemini.-can-you-search.md

Lines changed: 474 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"child_sessions": null,
3+
"cwd": "/Users/pascal/Code/business/convx",
4+
"messages": [
5+
{
6+
"kind": "user",
7+
"role": "user",
8+
"text": "u there?",
9+
"timestamp": "2026-03-02T14:17:00.063Z"
10+
},
11+
{
12+
"kind": "assistant",
13+
"role": "assistant",
14+
"text": "I'm here and ready to help. What's on your mind?",
15+
"timestamp": "2026-03-02T14:17:02.258Z"
16+
}
17+
],
18+
"session_id": "f2f5b5d8-4789-40eb-ba42-7ba0216665ed",
19+
"session_key": "gemini:f2f5b5d8-4789-40eb-ba42-7ba0216665ed",
20+
"source_path": "/Users/pascal/.gemini/tmp/convx/chats/session-2026-03-02T14-16-f2f5b5d8.json",
21+
"source_system": "gemini",
22+
"started_at": "2026-03-02T14:17:00.063Z",
23+
"summary": null,
24+
"system_name": "Pascals-MBP.local",
25+
"user": "pascal"
26+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Conversation f2f5b5d8-4789-40eb-ba42-7ba0216665ed
2+
3+
- Source: `gemini`
4+
- User: `pascal`
5+
- System: `Pascals-MBP.local`
6+
- Started: `2026-03-02T14:17:00.063Z`
7+
- CWD: `/Users/pascal/Code/business/convx`
8+
9+
## User
10+
11+
_`2026-03-02T14:17:00.063Z`_
12+
13+
u there?
14+
15+
## Agent
16+
17+
_`2026-03-02T14:17:02.258Z`_
18+
19+
I'm here and ready to help. What's on your mind?

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Export AI conversation sessions into a Git repository using a readable, time-bas
66

77
## What it does
88

9-
- Scans source session files (Codex JSONL, Claude projects, Cursor workspaceStorage).
9+
- Scans source session files (Codex JSONL, Claude projects, Cursor workspaceStorage, Gemini CLI sessions).
1010
- Normalizes each session into a common model.
1111
- Writes two artifacts per session:
1212
- readable Markdown transcript: `YYYY-MM-DD-HHMM-slug.md`
@@ -50,7 +50,7 @@ cd /path/to/your/project
5050
uv run convx sync
5151
```
5252

53-
By default syncs Codex, Claude, and Cursor. Use `--source-system codex`, `--source-system claude`, or `--source-system cursor` to sync a single source. No `--output-path` needed — the Git root is used as destination and the current working directory is used as scope filter. Recursive folder matching is enabled by default; use `--no-recursive` to restrict to the current folder only. Sessions are written flat under `.ai/history/<user>/<source-system>/` with no machine name or path nesting.
53+
By default syncs Codex, Claude, Cursor, and Gemini. Use `--source-system codex`, `--source-system claude`, `--source-system cursor`, or `--source-system gemini` to sync a single source. No `--output-path` needed — the Git root is used as destination and the current working directory is used as scope filter. Recursive folder matching is enabled by default; use `--no-recursive` to restrict to the current folder only. Sessions are written flat under `.ai/history/<user>/<source-system>/` with no machine name or path nesting.
5454

5555
## backup — full backup command
5656

@@ -64,12 +64,13 @@ uv run convx backup \
6464

6565
## Common options
6666

67-
- `--source-system`: source(s) to sync: `all` (default), `codex`, `claude`, `cursor`, or comma-separated.
67+
- `--source-system`: source(s) to sync: `all` (default), `codex`, `claude`, `cursor`, `gemini`, or comma-separated.
6868
- `--input-path`: source sessions directory override (per source).
6969
- default for Codex: `~/.codex/sessions`
7070
- default for Claude: `~/.claude/projects`
7171
- default for Cursor: `~/Library/Application Support/Cursor/User/workspaceStorage` (macOS)
7272
Supports both single-folder and multi-root (`.code-workspace`) Cursor windows.
73+
- default for Gemini: `~/.gemini/tmp`
7374
- `--user`: user namespace for history path (default: current OS user).
7475
- `--system-name`: system namespace for history path (default: hostname).
7576
- `--dry-run`: discover and plan without writing files.

src/convx_ai/adapters/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from .claude import ClaudeAdapter
66
from .codex import CodexAdapter
77
from .cursor import CursorAdapter
8+
from .gemini import GeminiAdapter
89

910

1011
def get_adapter(source_system: str):
@@ -15,6 +16,8 @@ def get_adapter(source_system: str):
1516
return CodexAdapter()
1617
if normalized == "cursor":
1718
return CursorAdapter()
19+
if normalized == "gemini":
20+
return GeminiAdapter()
1821
raise ValueError(f"Unsupported source system: {source_system}")
1922

2023

@@ -26,4 +29,6 @@ def default_input_path(source_system: str) -> Path:
2629
return Path("~/.codex/sessions").expanduser()
2730
if normalized == "cursor":
2831
return Path("~/Library/Application Support/Cursor/User/workspaceStorage").expanduser()
32+
if normalized == "gemini":
33+
return Path("~/.gemini/tmp").expanduser()
2934
raise ValueError(f"No default input path for source system: {source_system}")

0 commit comments

Comments
 (0)