antigravity-move-chat-to-projects

agent
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Gecti
  • Code scan — Scanned 1 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Lightweight CLI tool to move and transplant Google Antigravity conversations, trajectory steps, and artifacts between workspaces.

README.md

Antigravity Move Chat to Projects (Universal Conversation Transplanter & Backup)

Latest Release
License: MIT
Python 3.8+
Zero Dependencies
Platform: Cross-Platform

A lightweight, zero-dependency CLI utility to move, migrate, backup, export, and transplant conversations, agent trajectory history, execution metadata, artifacts, and plans between projects/workspaces in Google Antigravity Desktop App and Antigravity IDE—either on the same machine or across different computers (e.g. Personal PC to Office PC).

📦 Quick Download: Download transplant_chat.py directly (Right-click → Save link as...) or grab the script from the Latest Release.


🎯 The Problem

You fire up Antigravity (or the Antigravity IDE) and start brainstorming or generating ideas for something new. The agent produces solid plans, code snippets, and architecture... but then you realize:

  1. The chat was started in no-workspace mode, or inside a completely different project.
  2. You want to move a conversation between the Desktop App and the Antigravity IDE.
  3. You need to switch devices (e.g. from your home/personal PC to your office workstation) and want to bring your full conversation and planning state with you.

Up until now, you were stuck with frustrating workarounds:

  1. Rerunning the prompt in the new project and hoping the agent doesn't hallucinate or drift.
  2. Manually copy-pasting markdown plans, task lists, code chunks, and context across files.
  3. Copying .db files directly, which breaks because conversations are cryptographically bound to specific local workspace hashes and compiled Protobuf headers.

Currently, Antigravity has no built-in "Move Chat to Workspace" or "Export/Import" button.


💡 The Solution

transplant_chat.py provides a complete migration and backup toolkit:

  1. Zero External Dependencies: Runs directly with standard Python 3.8+ (sqlite3, zipfile, shutil, re, json, argparse)—no pip install or extra packages needed.
  2. Desktop App & Antigravity IDE Support: Seamlessly works with both Antigravity Desktop App (~/.gemini/antigravity) and Antigravity IDE (~/.gemini/antigravity-ide), including cross-environment transplants!
  3. Move Chats Locally: Move conversations between workspaces on the same computer with a single command.
  4. Export & Import Across Devices (.zip): Package an entire conversation into a standalone, compressed .zip backup archive. Take just that .zip file to your office computer, and import it into any chat.
  5. Preserves Native Workspace Bindings: Keeps the destination workspace's valid Protobuf headers, hashes, and session tokens so Antigravity doesn't crash or discard the chat.
  6. Transfers Full Context & Plans: Restores every message, tool action, and generated artifact (implementation_plan.md, walkthrough.md, task.md, transcript logs) so the AI remembers everything.
  7. Synchronizes Sidebar Title: Automatically updates .pbtxt metadata so the chat appears with its proper title in the Antigravity sidebar.
  8. Auto-Backups for Safety: Creates automatic timestamped backups of both the target database and target brain directory before modifying anything.

🔄 How It Works

Scenario A: Same Computer (Direct Workspace or Desktop $\leftrightarrow$ IDE Transplant)

flowchart LR
    subgraph Source["Source (Desktop App or IDE)"]
        A[Source Chat<br/>UUID: src_id]
        A --> B[(SQLite DB<br/>Steps & Metadata)]
        A --> C[Brain Folder<br/>Artifacts & Transcripts]
    end

    subgraph Target["Target (Desktop App or IDE)"]
        D[Placeholder Chat<br/>UUID: dst_id]
        D --> E[(Target SQLite DB)]
        D --> F[Target Brain Folder]
        D --> G[Sidebar .pbtxt]
    end

    B -->|Transplant Rows| E
    C -->|Copy Artifacts| F
    A -.->|Update Title| G

Scenario B: Across Devices (Portable .zip Export & Import)

flowchart TD
    subgraph PersonalPC["Personal Computer (Source)"]
        A[Original Chat<br/>UUID: src_id] --> B[transplant_chat.py --export]
        B --> C[portable_backup.zip<br/>DB + Brain + Manifest]
    end

    C -->|Transfer via USB / Cloud / Chat| D[portable_backup.zip]

    subgraph OfficePC["Office Computer (Target)"]
        D --> E[transplant_chat.py --import backup.zip dst_id]
        F[Office Placeholder Chat<br/>UUID: dst_id<br/>Created with 'hi'] -->|Provides Office Workspace Bindings| E
        E --> G[Restored Chat in Office Workspace]
    end

🚀 Quick Start Guide

1. Moving a Chat on the Same Computer

Step 1: Create an Empty Placeholder Chat

  1. In Antigravity (or Antigravity IDE), open your target project/workspace.
  2. Start a new chat, send a 1-word message (like hi), and wait for the agent to reply.
    (This initializes the target database and native workspace bindings).

[!TIP]
Safety First — Note Down Your IDs:
It is always recommended to note down your source and target chat titles/IDs in a notepad before closing. Run python transplant_chat.py --list (or --ide --list) to view your recent chat IDs.

Step 2: Close the Application Completely

Shut down Antigravity (or Antigravity IDE) so SQLite database locks are released.

Step 3: Run the Transplant Command

# Direct transplant (automatically detects Desktop App or IDE):
python transplant_chat.py <SOURCE_UUID> <DEST_UUID> ["Optional Custom Title"]

2. Moving Across Devices (e.g. Personal PC $\rightarrow$ Office PC)

Step 1: On Your Personal Computer (Export to .zip)

  1. Run --list to find your conversation UUID:
    python transplant_chat.py --list
    # Or for Antigravity IDE:
    python transplant_chat.py --ide --list
    
  2. Export the chat to a portable .zip backup:
    # Auto-names archive based on chat title and timestamp:
    python transplant_chat.py --export <SOURCE_UUID>
    
    # Or specify a custom output path:
    python transplant_chat.py --export <SOURCE_UUID> my_chat_backup.zip
    
  3. Transfer only my_chat_backup.zip to your office computer (via USB drive, cloud storage, Slack, or email).

Step 2: On Your Office Computer (Import from .zip)

  1. Open Antigravity (or IDE) in your desired office workspace.
  2. Start a new chat, send a 1-word message (like hi), and wait for the reply.
  3. Close the application completely.
  4. Run --list on your office computer to find the placeholder chat UUID:
    python transplant_chat.py --list
    # or: python transplant_chat.py --ide --list
    
  5. Import the .zip backup into the placeholder chat:
    python transplant_chat.py --import my_chat_backup.zip <OFFICE_CHAT_UUID>
    
    # Or specify a custom sidebar title:
    python transplant_chat.py --import my_chat_backup.zip <OFFICE_CHAT_UUID> "Refactored Feature"
    
  6. Reopen Antigravity / IDE: your complete conversation history, plans, tool actions, and sidebar title are ready in your office workspace!

🔍 Inspecting an Archive

You can inspect the contents and metadata of an exported chat archive without extracting it:

python transplant_chat.py --info my_chat_backup.zip
# or simply:
python transplant_chat.py my_chat_backup.zip

Output:

=================================================================
 Antigravity Chat Archive Info
=================================================================
 Archive File   : my_chat_backup.zip (0.07 MB)
 Chat Title     : Refactor Auth & Database
 Source Surface : Desktop App (or IDE)
 Original UUID  : 7b7c0bee-****-****-****-************
 Exported At    : 2026-09-10 14:16:53
 Total Steps    : 42
 Brain Files    : 8 artifacts & logs
=================================================================

⚙️ Command-Line Reference

usage: transplant_chat.py [-h] [-l] [--ide] [--limit LIMIT]
                          [-e SRC_ID [OUTPUT_ZIP ...]]
                          [-i ARCHIVE [DST_ID ...]]
                          [--info ARCHIVE_ZIP]
                          [pos_args ...]

Antigravity Universal Conversation Transplanter & Backup Utility

positional arguments:
  pos_args              Positional arguments for transplant, export, or import shortcuts

options:
  -h, --help            Show this help message and exit
  -l, --list            List recent conversations with UUIDs, titles, and timestamps
  --ide                 Target Antigravity IDE workspaces (~/.gemini/antigravity-ide) instead of desktop app
  --limit LIMIT         Maximum conversations to display with --list (default: 15)
  -e, --export          Export conversation to a portable .zip backup file
  -i, --import          Import .zip backup into target placeholder chat
  --info ARCHIVE_ZIP    Inspect a .zip chat backup without extracting

Quick Syntax Examples

Task Command
List Desktop chats python transplant_chat.py --list
List IDE chats python transplant_chat.py --ide --list
Export chat to zip python transplant_chat.py --export <SRC_ID> [output.zip]
Inspect zip archive python transplant_chat.py --info <archive.zip>
Import zip into chat python transplant_chat.py --import <archive.zip> <DST_ID> ["Title"]
Import shortcut python transplant_chat.py <archive.zip> <DST_ID> ["Title"]
Direct local transplant python transplant_chat.py <SRC_ID> <DST_ID> ["Title"]
Desktop $\leftrightarrow$ IDE transplant python transplant_chat.py <SRC_ID> <DST_ID> ["Title"] (auto-detects both)

🛡️ Safety & Rollback

Before any modification or import, transplant_chat.py automatically creates timestamped safety backups of the target chat:

  • Database Backup: <base_dir>/conversations/<DST_ID>.db.backup_<TIMESTAMP>
  • Brain Backup: <base_dir>/brain/<DST_ID>_backup_<TIMESTAMP>

Restoring from Backup

If you ever want to revert the destination chat:

  1. Close Antigravity / IDE.
  2. Locate the backup in <base_dir>/conversations/.
  3. Copy <DST_ID>.db.backup_<TIMESTAMP> back to <DST_ID>.db.
  4. (Optional) Restore the brain directory from <DST_ID>_backup_<TIMESTAMP> to <DST_ID>.

📂 Antigravity Data Architecture Reference

For reference, Antigravity stores conversation state inside your user profile under ~/.gemini/:

Location Environment Purpose
~/.gemini/antigravity/ Antigravity Desktop App Standard standalone desktop application state
~/.gemini/antigravity-ide/ Antigravity IDE AI-first IDE (VS Code-based) state

Within each environment:

Subdirectory / File Purpose What transplant_chat.py Does
conversations/<id>.db SQLite database storing steps and metadata Replaces rows in steps, gen_metadata, executor_metadata, parent_references, battle_mode_infos while preserving workspace trajectory_meta & trajectory_metadata_blob
brain/<id>/ Markdown artifacts (implementation_plan.md, walkthrough.md), scratch scripts, and JSONL transcripts Copies entire brain folder contents into target
annotations/<id>.pbtxt Protobuf text file storing conversation title and view timestamps Updates title:"..." to match source, archive manifest, or custom title
exported_chat.zip Portable archive generated by --export Contains manifest.json, conversation.db, brain/ folder, and annotations.pbtxt

💻 Compatibility

  • Surfaces: Antigravity Desktop App & Antigravity IDE
  • OS: Windows, macOS, Linux
  • Python: 3.8 or higher
  • Dependencies: None (uses standard Python library: sqlite3, zipfile, tempfile, json, shutil, re, argparse, os, sys)

🤝 Contributing

Contributions, bug reports, and feature requests are welcome! Feel free to open an issue or submit a Pull Request.

📄 License

This project is licensed under the MIT License.

Yorumlar (0)

Sonuc bulunamadi