dsh-antigravity-bridge
A Cordis plugin that opens Google Antigravity conversations inside DeepSeek Harness.
Antigravity stores each conversation as SQLite + protobuf blobs under
~/.gemini/antigravity/conversations/<cascade_id>.db; this plugin reads them
and exposes them as native DSH tools and slash commands.
Tools
| Tool | Description |
|---|---|
antigravity_list |
Recent conversations (id, timestamp, steps, title). Supports limit/offset |
antigravity_read |
Read one conversation as cleaned text (user prompts, tool results, summaries, background task output). Supports max_chars |
antigravity_import |
Convert one conversation into a DSH session (session.jsonl.zstd), attach it to a workspace, and return a conversation:// link |
Slash commands (/ autocomplete)
Run directly, no need to ask the agent:
| Command | Description |
|---|---|
/antigravity-list [N] |
Recent conversations (find IDs) |
/antigravity-read <cascade_id> |
Read one conversation |
/antigravity-import <cascade_id | latest> |
Import as a DSH session. Bare command shows the 5 most recent plus usage |
Requirements
- Python 3 (stdlib only, no dependencies) — override via
ANTIGRAVITY_PYTHON zstdCLI (for import compression, ships with the DSH host)- Antigravity conversations default to
~/.gemini/antigravity/conversations(override viaANTIGRAVITY_CONVERSATIONSor theconversations_dirargument) DSH_HOME(falls back to the macOS default~/Library/Application Support/dsh-desktop/harness)
Install
dsh plugin --profile web add dsh-antigravity-bridge
Local path install (no build step — src/index.js + decoder/*.py run as-is):
dsh plugin --profile web add /path/to/dsh-antigravity-bridge
How it works
decoder/antigravity_decode.pycopies the.dbto tmp first (avoids SQLite journal issues) and heuristically decodessteps.step_payloadprotobuf blobs (type 14=user,132/15=tool,23=summary,101=background task).antigravity_importbuilds a spec-compliant DSH session log atsessions/<projectKey(cwd)>/session-<cascade_id>/session.jsonl.zstd(atomic tmp+rename write) and attaches it through the sanctioned path:workspaceRegistry.resolveByPath+attachSessionwhile running (same write-chain as native flows, sidebar updates without restart), atomicworkspace.jsonedit as fallback for profiles without a registry. (projectKey/encodeSegmentmirror@deepseek-ai/dsh-session-persistence-jsonl)session_projcacheis intentionally untouched. The backend materializes projections from the session log on first open (verified in practice).- Re-importing is idempotent — returns the existing link instead of overwriting.
Sidebar-plugin conflicts
Effectively none. attachSession is the same funnel native flows use, so
dsh-better-sidebar / dsh-archived-chats / dsh-rewind-plugin see imported
sessions like any ordinary session. Imports run once per explicit invocation —
no background writes, no projcache edits, no global state changes.
Check
npm run check # node --check + python py_compile
python3 decoder/antigravity_decode.py list --limit 5
No comments yet. Be the first to write one.