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.
- converseek-0.2.0/.gitignore +3 -0
- converseek-0.2.0/PKG-INFO +5 -0
- converseek-0.2.0/README.md +35 -0
- converseek-0.2.0/SKILL.md +162 -0
- converseek-0.2.0/pyproject.toml +16 -0
- converseek-0.2.0/src/converseek/__init__.py +2 -0
- converseek-0.2.0/src/converseek/__main__.py +473 -0
- converseek-0.2.0/src/converseek/adapters/__init__.py +0 -0
- converseek-0.2.0/src/converseek/adapters/antigravity.py +303 -0
- converseek-0.2.0/src/converseek/adapters/claude_code.py +282 -0
- converseek-0.2.0/src/converseek/adapters/cursor.py +426 -0
- converseek-0.2.0/src/converseek/adapters/hermes.py +169 -0
- converseek-0.2.0/src/converseek/adapters/opencode.py +232 -0
- converseek-0.2.0/src/converseek/adapters/paseo.py +164 -0
- converseek-0.2.0/src/converseek/adapters/zcode.py +147 -0
- converseek-0.2.0/src/converseek/base.py +83 -0
- converseek-0.2.0/uv.lock +8 -0
|
@@ -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"]
|