converseek 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
@@ -0,0 +1,5 @@
1
+ Metadata-Version: 2.4
2
+ Name: converseek
3
+ Version: 0.2.0
4
+ Summary: Cross-tool session search, browse, and export for AI coding tools (Claude Code, Cursor, Antigravity, OpenCode, ZCode, Paseo, Hermes)
5
+ Requires-Python: >=3.11
@@ -0,0 +1,35 @@
1
+ # converseek
2
+
3
+ Cross-tool session search, browse, and export for 7 AI coding tools.
4
+
5
+ ## Supported Tools
6
+
7
+ | Tool | Data Source |
8
+ |------|-------------|
9
+ | Claude Code | `~/.claude/projects/` (JSONL + index) |
10
+ | Cursor | `state.vscdb` (composerData + bubbleId) |
11
+ | Antigravity 2.0 | `~/.gemini/antigravity/conversations/*.db` (SQLite + Protobuf) |
12
+ | OpenCode | `~/.local/share/opencode/opencode.db` |
13
+ | ZCode | `~/.zcode/cli/db/db.sqlite` |
14
+ | Paseo | `~/.paseo/agents/` (JSON) |
15
+ | Hermes | `~/.hermes/state.db` (SQLite + FTS5) |
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ uv tool install converseek
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ```bash
26
+ uvx converseek tools # list adapters
27
+ uvx converseek list --limit 10 # recent sessions
28
+ uvx converseek list --tool hermes --limit 5 # filter by tool
29
+ uvx converseek list --project myapp # filter by project
30
+ uvx converseek search "docker networking" # full-text search
31
+ uvx converseek search "auth" --tool claude,hermes # search specific tools
32
+ uvx converseek show hermes:20260620_201309_a8e8cb95 # read a session
33
+ uvx converseek export hermes:20260620_201309_a8e8cb95 # export to markdown
34
+ uvx converseek projects # list all projects
35
+ ```
@@ -0,0 +1,162 @@
1
+ ---
2
+ name: converseek
3
+ description: "Search, browse, and export sessions across 7 AI coding tools: Claude Code, Cursor, Antigravity 2.0, OpenCode, ZCode, Paseo, and Hermes."
4
+ version: 1.0.0
5
+ author: Hermes Agent
6
+ metadata:
7
+ hermes:
8
+ tags: [session, search, cross-tool, reference, claude, cursor, hermes, opencode]
9
+ related_skills: [electron-app-investigation]
10
+ ---
11
+
12
+ # Session Search
13
+
14
+ Cross-tool session search, browse, and export. Query and read conversations from **7 AI coding tools** through a single CLI.
15
+
16
+ ## Supported Tools
17
+
18
+ | Tool | Data Source | Session Count |
19
+ |---------------------|----------------------------------------------------------------|---------------|
20
+ | **Claude Code** | `~/.claude/projects/` (JSONL + index) | ~394 |
21
+ | **Cursor** | `~/Library/Application Support/Cursor/.../state.vscdb` | ~1,264 |
22
+ | **Antigravity 2.0** | `~/.gemini/antigravity/conversations/*.db` (SQLite + Protobuf) | ~55 |
23
+ | **OpenCode** | `~/.local/share/opencode/opencode.db` | ~858 |
24
+ | **ZCode** | `~/.zcode/cli/db/db.sqlite` | varies |
25
+ | **Paseo** | `~/.paseo/agents/` (JSON files) | varies |
26
+ | **Hermes** | `~/.hermes/state.db` (SQLite + FTS5) | varies |
27
+
28
+ ## Quick Start
29
+
30
+ ```bash
31
+ # List available tools and their status
32
+ uvx converseek tools
33
+
34
+ # List recent sessions across all tools
35
+ uvx converseek list --limit 10
36
+
37
+ # List from a specific tool
38
+ uvx converseek list --tool hermes --limit 5
39
+
40
+ # Filter by project
41
+ uvx converseek list --project myapp
42
+
43
+ # Search across all tools
44
+ uvx converseek search "docker networking"
45
+
46
+ # Search specific tools only
47
+ uvx converseek search "auth refactor" --tool claude,hermes
48
+
49
+ # Search within a project
50
+ uvx converseek search "auth" --project myapp
51
+
52
+ # Read a session's messages
53
+ uvx converseek show hermes:20260620_201309_a8e8cb95
54
+ uvx converseek show claude:f2f188c7-... --window 20
55
+
56
+ # Export a session to Markdown
57
+ uvx converseek export hermes:20260620_201309_a8e8cb95
58
+ uvx converseek export hermes:20260620_201309_a8e8cb95 -o session.md
59
+
60
+ # List all projects with session counts
61
+ uvx converseek projects
62
+ ```
63
+
64
+ ## Commands
65
+
66
+ ### `tools`
67
+ List all adapters and their availability status.
68
+
69
+ ### `list [options]`
70
+ List sessions, most recent first.
71
+
72
+ | Option | Description |
73
+ |------------------|---------------------------------------------|
74
+ | `--tool TOOL` | Comma-separated tool names (default: all) |
75
+ | `--limit N` | Max sessions to show (default: 20) |
76
+ | `--since DATE` | Only sessions since date (YYYY-MM-DD) |
77
+ | `--cwd PATH` | Filter by working directory prefix |
78
+ | `--project PATH` | Filter by project name/path (fuzzy match) |
79
+
80
+ ### `search QUERY [options]`
81
+ Full-text search across sessions. Searches titles and message content.
82
+
83
+ | Option | Description |
84
+ |------------------|---------------------------------------------|
85
+ | `--tool TOOL` | Comma-separated tool names (default: all) |
86
+ | `--limit N` | Max results (default: 20) |
87
+ | `--project PATH` | Filter by project name/path (fuzzy match) |
88
+
89
+ Per-adapter timeout: 15 seconds. Slow tools (Antigravity) are skipped if they timeout.
90
+
91
+ ### `show TOOL:SESSION_ID [options]`
92
+ Display messages from a specific session.
93
+
94
+ | Option | Description |
95
+ |-----------------|---------------------------------------|
96
+ | `--window N` | Only show last N messages |
97
+ | `--max-chars N` | Max chars per message (default: 2000) |
98
+
99
+ ### `export TOOL:SESSION_ID [options]`
100
+ Export a session to a Markdown file with metadata and full message history.
101
+
102
+ | Option | Description |
103
+ |--------------|--------------------------------------------------------------|
104
+ | `-o FILE` | Output file path (default: `./<tool>-<session_id>.md`) |
105
+
106
+ ### `projects [options]`
107
+ List all unique project directories with session counts.
108
+
109
+ | Option | Description |
110
+ |---------------|-------------------------------------------|
111
+ | `--tool TOOL` | Comma-separated tool names (default: all) |
112
+ | `--limit N` | Max projects to show (default: 50) |
113
+
114
+ ## Cross-Tool Reference Format
115
+
116
+ All sessions use a unified reference format:
117
+
118
+ ```
119
+ <tool>:<session_id>
120
+ ```
121
+
122
+ Examples:
123
+ - `hermes:20260620_201309_a8e8cb95`
124
+ - `claude:f2f188c7-77cf-45c7-bc2f-fe26ed61beb4`
125
+ - `cursor:b6d91996-70c7-426c-9423-337b96a1c3c1`
126
+ - `antigravity:00d476a2-b9cb-40cc-937d-a7819a750de2`
127
+ - `opencode:ses_1981d72b6ffeN5bTHtWW7EsSZn`
128
+ - `zcode:sess_5b9d6024-78c6-4835-b4e8-6ea182630c9a`
129
+ - `paseo:9f34605d-12fd-4a28-ba02-dc9d6d7049e8`
130
+
131
+ ## Architecture
132
+
133
+ Each tool has a dedicated adapter implementing three operations:
134
+ - `list_sessions()` — enumerate session metadata
135
+ - `search_sessions()` — keyword search within sessions
136
+ - `read_messages()` — retrieve full or windowed message history
137
+
138
+ ```
139
+ converseek/
140
+ ├── base.py # Abstract interface + data models
141
+ └── adapters/
142
+ ├── claude_code.py # JSONL + sessions-index.json
143
+ ├── hermes.py # state.db with FTS5
144
+ ├── opencode.py # opencode.db (message → part schema)
145
+ ├── zcode.py # db.sqlite (same message → part schema)
146
+ ├── paseo.py # JSON files (metadata only, no transcripts)
147
+ ├── cursor.py # state.vscdb (composerData + bubbleId)
148
+ └── antigravity.py # .db + protoc --decode_raw
149
+ ```
150
+
151
+ ## References
152
+
153
+ - `references/tool-session-formats.md` — Detailed data format reference for all 7 tools' session storage (SQLite schemas, JSONL structures, protobuf field mappings, key formats)
154
+
155
+ ## Pitfalls
156
+
157
+ - **Antigravity is slow**: Each session DB requires `protoc --decode_raw` subprocess calls. The `list` command skips payload decoding (only reads file mtime + metadata blob). The `search` command uses hex matching on raw protobuf bytes to avoid full decoding.
158
+ - **Cursor composerData format**: Conversation headers are in `fullConversationHeadersOnly` field. Actual text is in separate `bubbleId:<composerId>:<bubbleId>` entries. Empty sessions and `task-*` stubs are filtered out.
159
+ - **OpenCode dual schema**: New versions use `~/.local/share/opencode/opencode.db` with `session` + `message` + `part` tables. Legacy uses `~/.opencode/opencode.db` with `sessions` + `messages`. The adapter auto-detects.
160
+ - **ZCode content in parts**: Like OpenCode, ZCode stores message text in the `part` table, not in `message.data`. The `message.data` only has metadata (role, model, timestamps).
161
+ - **Paseo metadata only**: Paseo agent JSON files contain session metadata but not full transcripts. `read_messages()` returns empty for Paseo.
162
+ - **Per-adapter timeout**: List and search operations have a 15-second timeout per adapter to prevent slow tools from blocking the entire query.
@@ -0,0 +1,16 @@
1
+ [project]
2
+ name = "converseek"
3
+ version = "0.2.0"
4
+ description = "Cross-tool session search, browse, and export for AI coding tools (Claude Code, Cursor, Antigravity, OpenCode, ZCode, Paseo, Hermes)"
5
+ requires-python = ">=3.11"
6
+ dependencies = []
7
+
8
+ [project.scripts]
9
+ converseek = "converseek.__main__:main"
10
+
11
+ [build-system]
12
+ requires = ["hatchling"]
13
+ build-backend = "hatchling.build"
14
+
15
+ [tool.hatch.build.targets.wheel]
16
+ packages = ["src/converseek"]
@@ -0,0 +1,2 @@
1
+ """converseek — Cross-tool conversation search, browse, and export."""
2
+ __version__ = "0.2.0"