From 986de201d0daa42f4c50c9cd6cf090ed1f8a9154 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:41:52 +0300
Subject: [PATCH 01/22] docs: add multi-language README support
- Add README translations in Chinese, Spanish, French, Portuguese, Ukrainian, and German
- Add a unified language switcher to all README variants to easily navigate between locales
- Preserved identical code blocks, links, and layout structure across all variants
---
README-DE.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README-ES.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README-FR.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README-PT.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README-UA.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README-ZH.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++
README.md | 7 ++++-
7 files changed, 492 insertions(+), 1 deletion(-)
create mode 100644 README-DE.md
create mode 100644 README-ES.md
create mode 100644 README-FR.md
create mode 100644 README-PT.md
create mode 100644 README-UA.md
create mode 100644 README-ZH.md
diff --git a/README-DE.md b/README-DE.md
new file mode 100644
index 000000000..261c82694
--- /dev/null
+++ b/README-DE.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI versteht Ihre Codebasis, nimmt Änderungen mit Ihrer Erlaubnis vor und führt Befehle aus – direkt in Ihrem Terminal.
+
+- **Offizielle Dokumentation**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **Offizielle Website**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+Antigravity CLI bringt die Kernfunktionen von Antigravity 2.0 (mehrstufiges Denken, Bearbeiten mehrerer Dateien, Tool-Aufrufe und persistenter Verlauf) direkt in Ihr Terminal. Es ist für tastaturgesteuerte Arbeitsabläufe und Remote-SSH-Sitzungen mit minimalem Ressourcen-Overhead optimiert.
+
+---
+
+## Funktionen im Überblick
+
+| Funktion | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **Hauptfokus** | Geschwindigkeit, Tastatureffizienz, geringer Overhead | Vollständigkeit, visuelle Orchestrierung, Projektmanagement |
+| **Schnittstelle** | Terminal-Benutzeroberfläche (TUI) | Vollständige, umfangreiche GUI-Anwendung |
+| **Arbeitsabläufe** | SSH/Remote-Sitzungen, Tastatur zuerst | Lokale Arbeitsbereiche, komplexe Orchestrierung |
+| **Agenten-Engine** | Gemeinsame Core-Agenten-Engine | Gemeinsame Core-Agenten-Engine |
+
+---
+
+## Integration
+
+- **Gemeinsame Agenten-Engine**: Beide Schnittstellen laufen auf derselben Core-Agenten-Engine. Verbesserungen werden automatisch auf beide angewendet.
+- **Gemeinsame Einstellungen**: Einstellungen und Berechtigungen werden bidirektional synchronisiert.
+- **Sitzungsexport**: Exportieren Sie Terminalsitzungen in die Antigravity 2.0 GUI, um die Arbeit fortzusetzen.
+
+---
+
+## Installation
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## Authentifizierung
+
+Die CLI authentifiziert sich über den System-Schlüsselbund und greift auf die Google-Anmeldung zurück, wenn keine aktive Sitzung vorhanden ist.
+
+- **Lokal**: Öffnet automatisch Ihren Standardbrowser.
+- **Remote / SSH**: Erkennt SSH-Sitzungen und gibt eine Autorisierungs-URL aus, um die Anmeldung lokal abzuschließen.
+- **Abmelden**: Führen Sie `/logout` aus, um gespeicherte Anmeldeinformationen zu löschen.
+
+> [!NOTE]
+> Verbinden Sie für den Unternehmenszugriff Ihr GCP-Projekt während des Onboardings. Weitere Informationen finden Sie auf der Enterprise-Seite.
+
+---
+
+## Nutzungsbedingungen und Datennutzung
+
+> [!WARNING]
+> Es ist bekannt, dass KI-Codierungsagenten bestimmte Sicherheitsrisiken aufweisen, darunter die autonome Codeausführung, Datenabfluss, Prompt-Injektionen und Risiken in der Lieferkette. Stellen Sie sicher, dass Sie alle Aktionen des Agenten überwachen und überprüfen.
+
+Durch die Nutzung von Antigravity CLI erklären Sie sich damit einverstanden, zur Verbesserung des Produkts beizutragen, indem Sie Google gestatten, Ihre Interaktionsdaten zu erfassen und zu verwenden, vorbehaltlich der Google-Nutzungsbedingungen und der Google-Datenschutzerklärung. Sie können sich jederzeit über Ihre Einstellungen abmelden.
+
+### Rechtliche Links und Datenschutz
+
+- **Nutzungsbedingungen**: [antigravity.google/terms](https://antigravity.google/terms)
+- **Datenschutzerklärung**: [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README-ES.md b/README-ES.md
new file mode 100644
index 000000000..d076c33e8
--- /dev/null
+++ b/README-ES.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI comprende su código base, realiza ediciones con su permiso y ejecuta comandos, directamente desde su terminal.
+
+- **Documentación oficial**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **Sitio web oficial**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+Antigravity CLI lleva las capacidades principales de Antigravity 2.0 (razonamiento de múltiples pasos, edición de múltiples archivos, llamadas a herramientas e historial persistente) directamente a su terminal. Está optimizado para flujos de trabajo basados en teclado y sesiones SSH remotas con una sobrecarga mínima de recursos.
+
+---
+
+## Características principales
+
+| Característica | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **Enfoque principal** | Velocidad, eficiencia de teclado, baja sobrecarga | Integridad, orquestación visual, gestión de proyectos |
+| **Interfaz** | Interfaz de usuario de terminal (TUI) | Aplicación GUI completa y enriquecida |
+| **Flujos de trabajo** | Sesiones SSH/remotas, primero el teclado | Espacios de trabajo locales, orquestación pesada |
+| **Motor de agente** | Motor de agente central compartido | Motor de agente central compartido |
+
+---
+
+## Integración
+
+- **Motor de agente compartido**: Ambas interfaces se ejecutan en el mismo motor de agente central. Las mejoras se aplican automáticamente a ambas.
+- **Configuraciones compartidas**: Las preferencias y los permisos se sincronizan bidireccionalmente.
+- **Exportación de sesiones**: Exporte sesiones de terminal a la interfaz gráfica de usuario de Antigravity 2.0 para seguir trabajando.
+
+---
+
+## Instalación
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## Autenticación
+
+La CLI se autentica a través del llavero del sistema, recurriendo al inicio de sesión de Google si no existe una sesión activa.
+
+- **Local**: Abre automáticamente su navegador predeterminado.
+- **Remoto / SSH**: Detecta sesiones SSH e imprime una URL de autorización para completar el inicio de sesión localmente.
+- **Cerrar sesión**: Ejecute `/logout` para borrar las credenciales guardadas.
+
+> [!NOTE]
+> Para acceso empresarial, conecte su proyecto de GCP durante el proceso de incorporación. Consulte la página de Enterprise para obtener más detalles.
+
+---
+
+## Términos de servicio y uso de datos
+
+> [!WARNING]
+> Se sabe que los agentes de codificación de IA conllevan ciertos riesgos de seguridad, incluida la ejecución autónoma de código, la filtración de datos, la inyección de directivas (prompts) y riesgos en la cadena de suministro. Asegúrese de supervisar y verificar todas las acciones realizadas por el agente.
+
+Al utilizar Antigravity CLI, acepta ayudar a mejorar el producto permitiendo que Google recopile y utilice sus datos de interacciones, de conformidad con los Términos de servicio de Google y la Política de privacidad de Google. Puede optar por no participar en cualquier momento a través de su configuración.
+
+### Enlaces legales y de privacidad
+
+- **Términos de servicio**: [antigravity.google/terms](https://antigravity.google/terms)
+- **Política de privacidad**: [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README-FR.md b/README-FR.md
new file mode 100644
index 000000000..6acb2e684
--- /dev/null
+++ b/README-FR.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI comprend votre base de code, effectue des modifications avec votre autorisation et exécute des commandes — directement depuis votre terminal.
+
+- **Documentation officielle**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **Site web officiel**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+Antigravity CLI apporte les fonctionnalités fondamentales d'Antigravity 2.0 (raisonnement en plusieurs étapes, édition multi-fichiers, appels d'outils et historique persistant) directement dans votre terminal. Il est optimisé pour les flux de travail axés sur le clavier et les sessions SSH distantes avec une surcharge de ressources minimale.
+
+---
+
+## Aperçu des fonctionnalités
+
+| Fonctionnalité | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **Objectif principal** | Vitesse, efficacité du clavier, faible surcharge | Exhaustivité, orchestration visuelle, gestion de projet |
+| **Interface** | Interface utilisateur de terminal (TUI) | Application GUI complète et riche |
+| **Flux de travail** | Sessions SSH/distantes, clavier d'abord | Espaces de travail locaux, orchestration lourde |
+| **Moteur d'agent** | Moteur d'agent central partagé | Moteur d'agent central partagé |
+
+---
+
+## Intégration
+
+- **Moteur d'agent partagé** : Les deux interfaces s'exécutent sur le même moteur d'agent central. Les améliorations s'appliquent automatiquement aux deux.
+- **Paramètres partagés** : Les préférences et les autorisations se synchronisent de manière bidirectionnelle.
+- **Exportation de session** : Exportez les sessions de terminal vers l'interface graphique Antigravity 2.0 pour continuer à travailler.
+
+---
+
+## Installation
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## Authentification
+
+Le CLI s'authentifie via le trousseau d'accès du système, revenant à la connexion Google si aucune session active n'existe.
+
+- **Local** : Ouvre automatiquement votre navigateur par défaut.
+- **Remoto / SSH** : Détecte les sessions SSH et affiche une URL d'autorisation pour terminer la connexion localement.
+- **Déconnexion** : Exécutez `/logout` pour effacer les identifiants enregistrés.
+
+> [!NOTE]
+> Pour un accès entreprise, connectez votre projet GCP lors de l'intégration. Consultez la page Enterprise pour plus de détails.
+
+---
+
+## Conditions d'utilisation et utilisation des données
+
+> [!WARNING]
+> Les agents de codage IA sont connus pour présenter certains risques de sécurité, notamment l'exécution autonome de code, l'exfiltration de données, l'injection de prompts et les risques liés à la chaîne d'approvisionnement. Assurez-vous de surveiller et de vérifier toutes les actions entreprises par l'agent.
+
+En utilisant Antigravity CLI, vous acceptez d'aider à améliorer le produit en autorisant Google à collecter et utiliser vos données d'interactions, conformément aux Conditions d'utilisation de Google et à la Règles de confidentialité de Google. Vous pouvez choisir de vous désinscrire à tout moment via vos paramètres.
+
+### Liens juridiques et confidentialité
+
+- **Conditions d'utilisation** : [antigravity.google/terms](https://antigravity.google/terms)
+- **Règles de confidentialité** : [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README-PT.md b/README-PT.md
new file mode 100644
index 000000000..ec843d196
--- /dev/null
+++ b/README-PT.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI compreende a sua base de código, faz edições com a sua permissão e executa comandos — diretamente do seu terminal.
+
+- **Documentação Oficial**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **Website Oficial**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+O Antigravity CLI traz os recursos principais do Antigravity 2.0 (raciocínio em várias etapas, edição de vários arquivos, chamadas de ferramentas e histórico persistente) diretamente para o seu terminal. Ele é otimizado para fluxos de trabalho orientados por teclado e sessões SSH remotas com sobrecarga mínima de recursos.
+
+---
+
+## Visão Geral dos Recursos
+
+| Recurso | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **Foco Principal** | Velocidade, eficiência do teclado, baixa sobrecarga | Abrangência, orquestração visual, gerenciamento de projetos |
+| **Interface** | Interface de Usuário de Terminal (TUI) | Aplicativo GUI Completo e Rico |
+| **Fluxos de Trabalho** | Sessões SSH/remotas, primeiro o teclado | Espaços de trabalho locais, orquestração pesada |
+| **Motor de Agente** | Motor de Agente Central Compartilhado | Motor de Agente Central Compartilhado |
+
+---
+
+## Integração
+
+- **Motor de Agente Compartilhado**: Ambas as interfaces rodam no mesmo motor de agente central. As melhorias se aplicam automaticamente a ambas.
+- **Configurações Compartilhadas**: As preferências e as permissões são sincronizadas bidirecionalmente.
+- **Exportação de Sessão**: Exporte sessões de terminal para a GUI do Antigravity 2.0 para continuar trabalhando.
+
+---
+
+## Instalação
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## Autenticação
+
+A CLI se autentica por meio do chaveiro do sistema, recorrendo ao login do Google se não houver sessão ativa.
+
+- **Local**: Abre automaticamente o seu navegador padrão.
+- **Remoto / SSH**: Detecta sessões SSH e exibe uma URL de autorização para concluir o login localmente.
+- **Sair**: Execute `/logout` para limpar as credenciais salvas.
+
+> [!NOTE]
+> Para acesso corporativo, conecte seu projeto do GCP durante a integração. Consulte la página de Enterprise para obter mais detalhes.
+
+---
+
+## Termos de Serviço e Uso de Dados
+
+> [!WARNING]
+> Sabe-se que os agentes de codificação de IA apresentam certos riscos de segurança, incluindo execução autônoma de código, exfiltração de dados, injeção de prompt e riscos na cadeia de suprimentos. Certifique-se de monitorar e verificar todas as ações tomadas pelo agente.
+
+Ao usar o Antigravity CLI, você concorda em ajudar a melhorar o produto, permitindo que a Google colete e use seus dados de interações, sujeito aos Termos de Serviço da Google e à Política de Privacidade da Google. Você pode optar por sair a qualquer momento por meio de suas configurações.
+
+### Links Legais e de Privacidade
+
+- **Termos de Serviço**: [antigravity.google/terms](https://antigravity.google/terms)
+- **Política de Privacidade**: [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README-UA.md b/README-UA.md
new file mode 100644
index 000000000..da7738d82
--- /dev/null
+++ b/README-UA.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI розуміє вашу кодову базу, вносить зміни з вашого дозволу та виконує команди — безпосередньо з вашого терміналу.
+
+- **Офіційна документація**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **Офіційний вебсайт**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+Antigravity CLI переносить основні можливості Antigravity 2.0 (багатокрокові міркування, редагування кількох файлів, виклик інструментів та збереження історії) безпосередньо у ваш термінал. Його оптимізовано для робочих процесів, керованих з клавіатури, та віддалених сесій SSH з мінімальними витратами системних ресурсів.
+
+---
+
+## Огляд можливостей
+
+| Можливість | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **Основний фокус** | Швидкість, ефективність клавіатури, низькі накладні витрати | Повнота, візуальна оркестрація, управління проєктами |
+| **Інтерфейс** | Інтерфейс користувача терміналу (TUI) | Повноцінний графічний додаток (GUI) |
+| **Робочі процеси** | SSH / віддалені сесії, пріоритет клавіатури | Локальні робочі простори, складна оркестрація |
+| **Двигун агента** | Спільний основний двигун агента | Спільний основний двигун агента |
+
+---
+
+## Інтеграція
+
+- **Спільний двигун агента**: Обидва інтерфейси працюють на одному спільному ядрі агента. Покращення автоматично застосовуються до обох.
+- **Спільні налаштування**: Вподобання та дозволи синхронізуються в обох напрямках.
+- **Експорт сесії**: Експортуйте термінальні сесії в графічний інтерфейс Antigravity 2.0 для продовження роботи.
+
+---
+
+## Встановлення
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## Автентифікація
+
+CLI виконує автентифікацію через системну зв'язку ключів, повертаючись до входу Google Sign-In, якщо немає активної сесії.
+
+- **Локально**: Автоматично відкриває ваш браузер за замовчуванням.
+- **Віддалено / SSH**: Виявляє сесії SSH та виводить URL-адресу авторизації для входу локально.
+- **Вихід**: Виконайте `/logout` для видалення збережених облікових даних.
+
+> [!NOTE]
+> Для корпоративного доступу підключіть свій проєкт GCP під час онбордингу. Детальніше на сторінці Enterprise.
+
+---
+
+## Умови використання та використання даних
+
+> [!WARNING]
+> Відомо, що ШІ-агенти для кодування мають певні ризики безпеки, зокрема автономне виконання коду, витік даних, prompt-ін'єкції та ризики в ланцюжку постачання. Переконайтеся, що ви контролюєте та перевіряєте всі дії, які виконує агент.
+
+Використовуючи Antigravity CLI, ви погоджуєтеся допомагати покращувати продукт, дозволяючи Google збирати та використовувати ваші дані про взаємодію відповідно до Умов використання Google та Політики конфіденційності Google. Ви можете будь-коли відмовитися через свої налаштування.
+
+### Юридичні посилання та конфіденційність
+
+- **Умови використання**: [antigravity.google/terms](https://antigravity.google/terms)
+- **Політика конфіденційності**: [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README-ZH.md b/README-ZH.md
new file mode 100644
index 000000000..ebc773174
--- /dev/null
+++ b/README-ZH.md
@@ -0,0 +1,81 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
+# Antigravity CLI
+
+Antigravity CLI 能够理解您的代码库、在获得您许可的情况下编辑文件并执行命令——直接在您的终端中进行。
+
+- **官方文档**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+- **官方网站**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+
+
+---
+
+Antigravity CLI 将 Antigravity 2.0 的核心能力(多步推理、多文件编辑、工具调用和持久化历史记录)直接带入您的终端。它针对键盘驱动的常规工作流以及具有极低资源开销的远程 SSH 会话进行了优化。
+
+---
+
+## 功能概览
+
+| 功能 | Antigravity CLI | Antigravity 2.0 |
+| :--- | :--- | :--- |
+| **主要侧重点** | 速度、键盘效率、低开销 | 全面性、可视化编排、项目管理 |
+| **界面** | 终端用户界面 (TUI) | 完整丰富的 GUI 应用程序 |
+| **工作流** | SSH/远程会话,键盘优先 | 本地工作区,重度编排 |
+| **智能体引擎** | 共享核心智能体引擎 | 共享核心智能体引擎 |
+
+---
+
+## 整合与协同
+
+- **共享智能体引擎**: 两种界面均运行在相同的核心智能体引擎上。改进将自动应用到两者。
+- **共享设置**: 偏好设置和权限进行双向同步。
+- **会话导出**: 将终端会话导出至 Antigravity 2.0 GUI 以继续工作。
+
+---
+
+## 安装
+
+### macOS / Linux
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+### Windows PowerShell
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+### Windows CMD
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
+---
+
+## 身份验证
+
+CLI 通过系统钥匙串进行身份验证,如果不存在活动会话,则回退到 Google 登录。
+
+- **本地**: 自动打开您的默认浏览器。
+- **远程 / SSH**: 检测 SSH 会话并打印授权 URL,以便在本地完成登录。
+- **退出登录**: 运行 `/logout` 以清除保存的凭据。
+
+> [!NOTE]
+> 如需企业访问,请在新手引导期间连接您的 GCP 项目。详情请参阅企业版页面。
+
+---
+
+## 服务条款与数据使用
+
+> [!WARNING]
+> 众所周知,AI 编码智能体存在一定的安全风险,包括自主代码执行、数据外泄、提示词注入以及供应链风险。请务必监控并验证智能体执行的所有操作。
+
+通过使用 Antigravity CLI,您同意允许 Google 收集并使用您的交互数据以帮助改善产品,这受 Google 服务条款和 Google 隐私权政策的约束。您可以随时通过设置选择退出。
+
+### 法律与隐私链接
+
+- **服务条款**: [antigravity.google/terms](https://antigravity.google/terms)
+- **隐私权政策**: [policies.google.com/privacy](https://policies.google.com/privacy)
diff --git a/README.md b/README.md
index aeff0f6bf..8b10057bf 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,11 @@
+
+ English | 中文 | Español | Français | Português | Українська | Deutsch
+
+
# Antigravity CLI
-Antigravity CLI understands your codebase, makes edits with your permission, and executes commands — right from your terminal.
+Antigravity CLI understands your codebase, makes edits with your permission, and
+ executes commands — right from your terminal.
- **Official Docs**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
- **Official Website**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
From 8b646f286a1aa7fb8bc5a052185ef6d2aefa8dae Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:07:30 +0300
Subject: [PATCH 02/22] feat: add install scripts, Makefile, config template,
and comprehensive README
- Add official install scripts (install.sh, install.ps1, install.cmd)
- Add Makefile with install/update/uninstall/check/run targets
- Add .antigravity.md project config template
- Add .gitignore for binaries and temp files
- Rewrite README with full usage guide, configuration, migration from Gemini CLI
Closes #0
---
.antigravity.md | 23 +++++
.gitignore | 21 +++++
Makefile | 66 +++++++++++++
README.md | 236 +++++++++++++++++++++++++++++++++++++++--------
install.cmd | 181 ++++++++++++++++++++++++++++++++++++
install.ps1 | 172 ++++++++++++++++++++++++++++++++++
install.sh | 239 ++++++++++++++++++++++++++++++++++++++++++++++++
7 files changed, 899 insertions(+), 39 deletions(-)
create mode 100644 .antigravity.md
create mode 100644 .gitignore
create mode 100644 Makefile
create mode 100644 install.cmd
create mode 100644 install.ps1
create mode 100755 install.sh
diff --git a/.antigravity.md b/.antigravity.md
new file mode 100644
index 000000000..085a26aff
--- /dev/null
+++ b/.antigravity.md
@@ -0,0 +1,23 @@
+# Project Configuration for Antigravity CLI
+# Place this file in the root of your project to provide context to the AI agent.
+# Docs: https://antigravity.google/docs/cli-overview
+
+# Project Overview
+# Describe your project, its purpose, and key technologies.
+# Example:
+#
+# This is a Python FastAPI backend with PostgreSQL.
+# - Use Pydantic v2 (model_dump(), not dict())
+# - All endpoints must have OpenAPI descriptions
+# - Tests: pytest with async fixtures
+# - Docker: compose v2 format
+
+# Coding Standards
+# - Follow PEP8 / ESLint / your linter rules
+# - Use meaningful commit messages (conventional commits)
+# - All functions must have docstrings/JSDoc
+
+# Security
+# - Never hardcode credentials — use environment variables
+# - Validate all user input
+# - Use parameterized queries for SQL
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..38af49534
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+# Binaries
+bin/
+antigravity
+agy
+*.tar.gz
+*.exe
+
+# OS files
+.DS_Store
+Thumbs.db
+*.swp
+*.swo
+*~
+
+# IDE
+.vscode/
+.idea/
+*.iml
+
+# Logs
+*.log
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..8418945dd
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,66 @@
+.PHONY: install update uninstall check help
+
+BINARY_NAME := agy
+INSTALL_DIR := $(HOME)/.local/bin
+BINARY_PATH := $(INSTALL_DIR)/$(BINARY_NAME)
+
+help: ## Show this help
+ @echo "Antigravity CLI — Makefile targets:"
+ @echo ""
+ @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
+ @echo ""
+
+install: ## Install Antigravity CLI via official script
+ @if [ -f "$(BINARY_PATH)" ]; then \
+ echo "✓ agy is already installed at $(BINARY_PATH)"; \
+ echo " Run 'make update' to update, or 'make reinstall' for fresh install."; \
+ else \
+ echo "⠋ Installing Antigravity CLI..."; \
+ bash install.sh; \
+ echo ""; \
+ echo "✓ Installation complete! Run 'agy' to start."; \
+ fi
+
+reinstall: uninstall install ## Remove and reinstall
+
+update: ## Update to the latest version
+ @if [ -f "$(BINARY_PATH)" ]; then \
+ echo "⠋ Updating Antigravity CLI..."; \
+ $(BINARY_PATH) update; \
+ else \
+ echo "✗ agy is not installed. Run 'make install' first."; \
+ exit 1; \
+ fi
+
+uninstall: ## Remove Antigravity CLI binary
+ @if [ -f "$(BINARY_PATH)" ]; then \
+ rm -f "$(BINARY_PATH)"; \
+ echo "✓ Removed $(BINARY_PATH)"; \
+ else \
+ echo "✓ agy is not installed at $(BINARY_PATH)"; \
+ fi
+
+check: ## Check if agy is installed and show version
+ @if command -v agy >/dev/null 2>&1; then \
+ echo "✓ agy found: $$(command -v agy)"; \
+ echo " Version: $$(agy --version 2>/dev/null || echo 'unknown')"; \
+ elif [ -f "$(BINARY_PATH)" ]; then \
+ echo "✓ agy found at $(BINARY_PATH) (not in PATH)"; \
+ echo " Version: $$($(BINARY_PATH) --version 2>/dev/null || echo 'unknown')"; \
+ echo ""; \
+ echo " Add to PATH:"; \
+ echo " export PATH=\"$(INSTALL_DIR):\$$PATH\""; \
+ else \
+ echo "✗ agy is not installed. Run 'make install'."; \
+ exit 1; \
+ fi
+
+run: ## Start agy interactive session
+ @if command -v agy >/dev/null 2>&1; then \
+ agy; \
+ elif [ -f "$(BINARY_PATH)" ]; then \
+ $(BINARY_PATH); \
+ else \
+ echo "✗ agy is not installed. Run 'make install' first."; \
+ exit 1; \
+ fi
diff --git a/README.md b/README.md
index aeff0f6bf..bb31f241e 100644
--- a/README.md
+++ b/README.md
@@ -1,77 +1,235 @@
-# Antigravity CLI
+# 🚀 Antigravity CLI
-Antigravity CLI understands your codebase, makes edits with your permission, and executes commands — right from your terminal.
+[](https://github.com/google-antigravity/antigravity-cli)
+[](CHANGELOG.md)
+[](https://antigravity.google/terms)
+[]()
-- **Official Docs**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Official Website**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+> **AI-агент прямо у вашому терміналі** — розуміє кодову базу, редагує файли з вашого дозволу та виконує команди.

---
-Antigravity CLI brings the core capabilities of Antigravity 2.0 (multi-step reasoning, multi-file editing, tool calling, and persistent history) directly to your terminal. It is optimized for keyboard-driven workflows and remote SSH sessions with minimal resource overhead.
+## ⚡ Швидкий старт
----
+### Встановлення
+
+
+Linux / macOS
+
+```bash
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+```
+
+Або з цього репозиторію:
+```bash
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+make install
+```
+
+
+
+Windows PowerShell
+
+```powershell
+irm https://antigravity.google/cli/install.ps1 | iex
+```
+
+
+
+Windows CMD
+
+```cmd
+curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+```
+
-## Features at a Glance
+### Перший запуск
+
+```bash
+# Запустити інтерактивний режим
+agy
-| Feature | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Primary Focus** | Speed, keyboard efficiency, low overhead | Comprehensiveness, visual orchestration, project management |
-| **Interface** | Terminal User Interface (TUI) | Full Rich GUI Application |
-| **Workflows** | SSH/Remote sessions, keyboard-first | Local workspaces, heavy orchestration |
-| **Agent Engine** | Shared Core Agent Engine | Shared Core Agent Engine |
+# Виконати одну команду
+agy -p "Поясни архітектуру цього проєкту"
+
+# Продовжити останню розмову
+agy -c
+```
---
-## Integration
+## 📋 Можливості
-- **Shared Agent Engine**: Both interfaces run on the same core agent engine. Improvements automatically apply to both.
-- **Shared Settings**: Preferences and permissions sync bidirectionally.
-- **Session Export**: Export terminal sessions to the Antigravity 2.0 GUI to continue working.
+| Можливість | Опис |
+|:---|:---|
+| **Мульти-файлове редагування** | Редагує декілька файлів одночасно з вашим підтвердженням |
+| **Shell-команди** | Виконує термінальні команди в sandbox або напряму |
+| **Мульти-степ reasoning** | Планує та виконує складні задачі крок за кроком |
+| **Persistent history** | Зберігає контекст розмов між сесіями |
+| **Plugin system** | Розширення через плагіни та кастомні skills |
+| **SSH/Remote** | Оптимізований для SSH-сесій та headless середовищ |
---
-## Installation
+## ⚙️ Конфігурація
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### Файл проєкту `.antigravity.md`
+
+Створіть `.antigravity.md` у корені проєкту для кастомних інструкцій:
+
+```markdown
+# Project Context
+
+This is a Python FastAPI project using Pydantic v2.
+Always use `model_dump()` instead of deprecated `dict()`.
+Database: PostgreSQL with SQLAlchemy 2.0 async.
+Tests: pytest with async fixtures.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### Налаштування (`~/.gemini/settings.json`)
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### Agents (`~/.antigravity/agents/`)
+
+Створюйте спеціалізованих агентів у YAML:
+
+```yaml
+# ~/.antigravity/agents/reviewer.yaml
+name: code-reviewer
+description: "Reviews code for security and best practices"
+instructions: |
+ Review the code for:
+ - Security vulnerabilities
+ - Performance issues
+ - Code style violations
```
---
-## Authentication
+## 🔐 Автентифікація
+
+| Метод | Опис |
+|:---|:---|
+| **Google Sign-In** | За замовчуванням, відкриває браузер. Free tier: 60 req/min, 1000 req/day |
+| **SSH/Remote** | Виводить URL для авторизації на іншому пристрої |
+| **API Key** | `export GEMINI_API_KEY="YOUR_KEY"` |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` для enterprise |
+| **Вихід** | Команда `/logout` |
-The CLI authenticates via the system keyring, falling back to Google Sign-In if no active session exists.
+---
-- **Local**: Automatically opens your default browser.
-- **Remote / SSH**: Detects SSH sessions and prints an authorization URL to complete login locally.
-- **Sign Out**: Run `/logout` to clear saved credentials.
+## 🔧 Команди
-> [!NOTE]
-> For enterprise access, connect your GCP project during onboarding. See the Enterprise page for details.
+```bash
+agy # Інтерактивний режим
+agy -p "запит" # Одноразовий запит (non-interactive)
+agy -c # Продовжити останню розмову
+agy --conversation # Відновити конкретну розмову
+agy --sandbox # Запуск у пісочниці
+agy --add-dir ../lib # Додати директорію до workspace
+agy update # Оновити до останньої версії
+agy changelog # Показати changelog
+agy plugin list # Показати встановлені плагіни
+agy plugin install # Встановити плагін
+```
+
+### Slash-команди (в інтерактивному режимі)
+
+| Команда | Опис |
+|:---|:---|
+| `/help` | Показати довідку |
+| `/settings` | Відкрити налаштування |
+| `/usage`, `/quota` | Статистика використання |
+| `/diff` | Переглянути git diff |
+| `/resume` | Відновити попередню сесію |
+| `/logout` | Вийти з акаунту |
+| `/statusline` | Налаштувати статус-бар |
---
-## Terms of Service & Data Use
+## 🔄 Міграція з Gemini CLI
-> [!WARNING]
-> AI coding agents are known to have certain security risks, including autonomous code execution, data exfiltration, prompt injection, and supply chain risks. Ensure that you monitor and verify all actions taken by the agent.
+> ⚠️ **Gemini CLI (`gemini`) припиняє роботу 18 червня 2026** для non-enterprise користувачів.
-By using Antigravity CLI, you agree to help improve the product by allowing Google to collect and use your Interactions data, subject to the Google Terms of Service and Google Privacy Policy. You can choose to opt out at any time via your settings.
+### Кроки міграції
-### Legal & Privacy Links
+```bash
+# 1. Встановити Antigravity CLI
+curl -fsSL https://antigravity.google/cli/install.sh | bash
+
+# 2. Перейменувати конфіг-файли
+mv GEMINI.md .antigravity.md
+mv .gemini/agents/ .antigravity/agents/ # якщо є
+
+# 3. Оновити CI/CD скрипти
+# Замінити 'gemini' → 'agy' в усіх скриптах
+
+# 4. Видалити старий Gemini CLI
+npm uninstall -g @google/gemini-cli
+```
+
+### Порівняння
+| | Gemini CLI (deprecated) | Antigravity CLI |
+|:---|:---|:---|
+| **Мова** | Node.js/TypeScript | Go (native binary) |
+| **Команда** | `gemini` | `agy` |
+| **Інсталяція** | `npm install -g` | `curl \| bash` (175MB binary) |
+| **Конфіг** | `GEMINI.md` | `.antigravity.md` |
+| **Агенти** | `.gemini/agents/` | `.antigravity/agents/` |
+| **Оновлення** | `npm update` | `agy update` (self-update) |
+| **Статус** | ⛔ EOL 18.06.2026 | ✅ Активна розробка |
+
+---
+
+## 📁 Структура репозиторію
+
+```
+antigravity-cli/
+├── install.sh # Інсталятор для Linux/macOS
+├── install.ps1 # Інсталятор для Windows PowerShell
+├── install.cmd # Інсталятор для Windows CMD
+├── Makefile # make install / make update / make uninstall
+├── .antigravity.md # Шаблон конфігу проєкту
+├── README.md # Цей файл
+├── CHANGELOG.md # Журнал змін
+└── agy-cli-demo.gif # Демо-анімація
+```
+
+---
+
+## 🤝 Contributing
+
+Це community-форк [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+Ми додаємо:
+- 🇺🇦 Українську документацію та локалізацію
+- 📖 Розширені гайди з міграції та конфігурації
+- 🔧 Makefile та утиліти для зручної установки
+- 🐛 Баг-фікси та PR до upstream
+
+---
+
+## 📜 Legal
+
+- **Official Docs**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
- **Terms of Service**: [antigravity.google/terms](https://antigravity.google/terms)
- **Privacy Policy**: [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!WARNING]
+> AI coding agents мають ризики: автономне виконання коду, data exfiltration, prompt injection. Завжди перевіряйте дії агента.
diff --git a/install.cmd b/install.cmd
new file mode 100644
index 000000000..ef60a6808
--- /dev/null
+++ b/install.cmd
@@ -0,0 +1,181 @@
+@echo off
+setlocal enabledelayedexpansion
+:: Absolute early argument sanitization to prevent RCE/LCE metacharacter injections safely
+set "CMD_LINE=!CMDCMDLINE!"
+echo(!CMD_LINE! | findstr /c:"&" /c:"|" /c:";" /c:"<" /c:">" /c:"^" >nul 2>&1
+if !ERRORLEVEL! equ 0 (
+ echo Fatal: Illegal shell characters detected in command line arguments. >&2
+ exit /b 1
+)
+endlocal
+setlocal disabledelayedexpansion
+
+set "DOWNLOAD_BASE_URL=https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+set "CUSTOM_DIR="
+set "FORWARD_ARGS="
+
+:parse_args
+if "%~1" == "" goto :args_done
+if "%~1" == "-d" goto :handle_d
+if "%~1" == "--dir" goto :handle_d
+:: Accumulate other arguments to forward. Delayed expansion is disabled here,
+:: so we must use standard percent-style expansion.
+set "FORWARD_ARGS=%FORWARD_ARGS% %1"
+shift
+goto :parse_args
+
+:handle_d
+if "%~2" == "" (
+ echo Error: Missing value for %~1 option. >&2
+ exit /b 1
+)
+set "CUSTOM_DIR=%~2"
+shift & shift
+goto :parse_args
+
+:args_done
+setlocal enabledelayedexpansion
+:: Use standard LOCALAPPDATA variable
+set "TARGET_DIR=!LOCALAPPDATA!\agy\bin"
+if not "!CUSTOM_DIR!" == "" set "TARGET_DIR=!CUSTOM_DIR!"
+set "BINARY_PATH=!TARGET_DIR!\agy.exe"
+
+REM Pre-existence & Dynamic Path Check
+if exist "!BINARY_PATH!" (
+ echo Notice: 'agy.exe' is already installed at !BINARY_PATH!.
+ echo The Antigravity CLI automatically self-updates in the background.
+ echo If you want to perform a fresh installation, delete the binary first:
+ echo del "!BINARY_PATH!"
+ exit /b 0
+)
+
+REM 1. Detect Architecture
+if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
+ set "PLATFORM=windows_amd64"
+) else if /i "%PROCESSOR_ARCHITECTURE%"=="ARM64" (
+ set "PLATFORM=windows_arm64"
+) else (
+ echo Fatal: Unsupported CPU architecture. >&2
+ exit /b 1
+)
+
+REM 2. Query Manifest & Parse securely via pure-CMD
+set "MANIFEST_URL=!DOWNLOAD_BASE_URL!/manifests/!PLATFORM!.json"
+set "MANIFEST_PATH=!TEMP!\manifest_!RANDOM!.json"
+curl -fsSL "!MANIFEST_URL!" -o "!MANIFEST_PATH!"
+if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to download release manifest from !MANIFEST_URL!. >&2
+ echo Please check your internet connection or firewall settings. >&2
+ if exist "!MANIFEST_PATH!" del "!MANIFEST_PATH!"
+ exit /b 1
+)
+
+:: Securely extract manifest values line-by-line (immune to minified JSON and spaces)
+set "VER_FILE=!TEMP!\ver_!RANDOM!.txt"
+findstr /c:"\"version\":" "!MANIFEST_PATH!" > "!VER_FILE!" 2>nul
+set "RAW_LINE="
+set /p RAW_LINE=<"!VER_FILE!" & del "!VER_FILE!"
+set "VERSION="
+if defined RAW_LINE (
+ set "CLEAN_LINE=!RAW_LINE: =!"
+ set "CLEAN_LINE=!CLEAN_LINE:*"version":"=!"
+ set "CLEAN_LINE=!CLEAN_LINE:"= !"
+ for /f "tokens=1" %%A in ("!CLEAN_LINE!") do set "VERSION=%%A"
+ set "VERSION=!VERSION:,=!"
+)
+
+set "URL_FILE=!TEMP!\url_!RANDOM!.txt"
+findstr /c:"\"url\":" "!MANIFEST_PATH!" > "!URL_FILE!" 2>nul
+set "RAW_LINE="
+set /p RAW_LINE=<"!URL_FILE!" & del "!URL_FILE!"
+set "URL="
+if defined RAW_LINE (
+ set "CLEAN_LINE=!RAW_LINE: =!"
+ set "CLEAN_LINE=!CLEAN_LINE:*"url":"=!"
+ set "CLEAN_LINE=!CLEAN_LINE:"= !"
+ for /f "tokens=1" %%A in ("!CLEAN_LINE!") do set "URL=%%A"
+ set "URL=!URL:,=!"
+)
+
+set "SHA_FILE=!TEMP!\sha_!RANDOM!.txt"
+findstr /c:"\"sha512\":" "!MANIFEST_PATH!" > "!SHA_FILE!" 2>nul
+set "RAW_LINE="
+set /p RAW_LINE=<"!SHA_FILE!" & del "!SHA_FILE!"
+set "SHA512="
+if defined RAW_LINE (
+ set "CLEAN_LINE=!RAW_LINE: =!"
+ set "CLEAN_LINE=!CLEAN_LINE:*"sha512":"=!"
+ set "CLEAN_LINE=!CLEAN_LINE:"= !"
+ for /f "tokens=1" %%A in ("!CLEAN_LINE!") do set "SHA512=%%A"
+ set "SHA512=!SHA512:,=!"
+)
+del "!MANIFEST_PATH!"
+
+if "!URL!"=="" (
+ echo Fatal: Failed to download or parse release manifest. >&2
+ exit /b 1
+)
+
+REM 3. Download & Verify Checksum
+set "STAGING_DIR=!LOCALAPPDATA!\antigravity\staging"
+if not exist "!STAGING_DIR!" mkdir "!STAGING_DIR!"
+if not exist "!STAGING_DIR!" (
+ echo Fatal: Failed to create staging directory !STAGING_DIR!. >&2
+ echo Please check write permissions for !LOCALAPPDATA!. >&2
+ exit /b 1
+)
+set "STAGING_PAYLOAD=!STAGING_DIR!\agy.exe"
+
+curl -fsSL "!URL!" -o "!STAGING_PAYLOAD!"
+if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to download release binary from !URL!. >&2
+ echo Please check your internet connection or firewall settings. >&2
+ if exist "!STAGING_PAYLOAD!" del "!STAGING_PAYLOAD!"
+ exit /b 1
+)
+if "!SHA512!"=="" (
+ echo Security Halt: Checksum missing in manifest. >&2
+ del "!STAGING_PAYLOAD!" & exit /b 1
+)
+
+set "ACTUAL="
+for /f "usebackq skip=1 tokens=*" %%i in (`certutil -hashfile "!STAGING_PAYLOAD!" SHA512 2^>nul`) do (
+ if not defined ACTUAL (
+ set "ACTUAL=%%i" & set "ACTUAL=!ACTUAL: =!"
+ )
+)
+if /i not "!ACTUAL!"=="!SHA512!" (
+ echo Security Halt: Checksum verification failed. The file may be corrupted or compromised. >&2
+ del "!STAGING_PAYLOAD!" & exit /b 1
+)
+
+REM 4. Place Binary & Unblock
+if not exist "!TARGET_DIR!" mkdir "!TARGET_DIR!"
+if not exist "!TARGET_DIR!" (
+ echo Fatal: Failed to create target directory !TARGET_DIR!. >&2
+ echo Please check directory permissions or specify a writable custom directory with --dir. >&2
+ del "!STAGING_PAYLOAD!"
+ exit /b 1
+)
+copy /y "!STAGING_PAYLOAD!" "!BINARY_PATH!" >nul
+if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to write binary to destination at !BINARY_PATH!. >&2
+ echo Please check directory permissions or if the file is locked, e.g. if 'agy.exe' is currently running. >&2
+ del "!STAGING_PAYLOAD!"
+ exit /b 1
+)
+ping -n 2 127.0.0.1 >nul 2>&1
+del "!STAGING_PAYLOAD!"
+del "!BINARY_PATH!:Zone.Identifier" >nul 2>&1
+
+REM 5. Go-Native Setup Handoff with Passthrough Flags
+set "SETUP_FLAGS="
+if not "!CUSTOM_DIR!"=="" set "SETUP_FLAGS=--dir "!CUSTOM_DIR!""
+set "SETUP_FLAGS=!SETUP_FLAGS! !FORWARD_ARGS!"
+
+:: Handoff safely via immune loop variables to prevent delayed expansion path mangling on '!'
+for /f "tokens=1* delims=?" %%A in ("!BINARY_PATH!?!SETUP_FLAGS!") do (
+ endlocal & endlocal
+ "%%A" install %%B
+)
+exit /b 0
diff --git a/install.ps1 b/install.ps1
new file mode 100644
index 000000000..334304edf
--- /dev/null
+++ b/install.ps1
@@ -0,0 +1,172 @@
+$ErrorActionPreference = "Stop"
+Set-StrictMode -Version Latest
+if ($ExecutionContext.SessionState.LanguageMode -ne 'ConstrainedLanguage') {
+ try {
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+ } catch {
+ # Ignore failure, TLS 1.2 might already be default or we can't set it.
+ }
+}
+
+$hasPath = ($null -ne $MyInvocation.MyCommand) -and ($null -ne $MyInvocation.MyCommand.PSObject.Properties['Path'])
+$scriptPath = if ($hasPath) { $MyInvocation.MyCommand.Path } else { $null }
+$isSourced = [string]::IsNullOrEmpty($scriptPath) -or ($MyInvocation.InvocationName -eq '.')
+
+$stagingPayload = $null
+$script:installExitCode = 0
+
+function Invoke-Install {
+ param($ScriptArgs)
+
+ $DOWNLOAD_BASE_URL = "https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+ $TARGET_DIR = Join-Path $env:LOCALAPPDATA "agy\bin"
+ $CUSTOM_DIR = ""
+ $passthroughArgs = @()
+
+ # Secure loop argument parsing and forward gathering
+ for ($i = 0; $i -lt $ScriptArgs.Count; $i++) {
+ if ($ScriptArgs[$i] -eq "-d" -or $ScriptArgs[$i] -eq "--dir") {
+ if ($i + 1 -lt $ScriptArgs.Count) {
+ $CUSTOM_DIR = $ScriptArgs[$i + 1]
+ $i++
+ } else {
+ Write-Error "Error: Missing value for directory option." -ErrorAction Continue
+ if ($isSourced) { throw "Error: Missing value for directory option." } else { $script:installExitCode = 1; return }
+ }
+ } else {
+ $passthroughArgs += $ScriptArgs[$i]
+ }
+ }
+ if ($CUSTOM_DIR -ne "") { $TARGET_DIR = $CUSTOM_DIR }
+ $binaryPath = Join-Path $TARGET_DIR "agy.exe"
+
+ # Pre-existence & Dynamic Path Check
+ if (Test-Path $binaryPath) {
+ Write-Host "Notice: 'agy.exe' is already installed at $binaryPath."
+ Write-Host "The Antigravity CLI automatically self-updates in the background."
+ Write-Host "If you want to perform a fresh installation, delete the binary first:"
+ Write-Host " Remove-Item `"$binaryPath`" -Force"
+ $script:installExitCode = 0; return
+ }
+
+ # 1. Detect Architecture
+ $arch = if ($env:PROCESSOR_ARCHITEW6432) { $env:PROCESSOR_ARCHITEW6432 } else { $env:PROCESSOR_ARCHITECTURE }
+ if ($arch -eq "AMD64") {
+ $platform = "windows_amd64"
+ } elseif ($arch -eq "ARM64") {
+ $platform = "windows_arm64"
+ } else {
+ Write-Error "Fatal: Unsupported CPU architecture." -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Unsupported CPU architecture." } else { $script:installExitCode = 1; return }
+ }
+
+ # 2. Download Manifest
+ try {
+ $manifest = Invoke-RestMethod -Uri "$DOWNLOAD_BASE_URL/manifests/$platform.json"
+ $version = $manifest.version
+ $url = $manifest.url
+ $sha512 = $manifest.sha512
+ } catch {
+ Write-Error "Fatal: Failed to download release manifest from $DOWNLOAD_BASE_URL/manifests/$platform.json. Network or DNS issue?" -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to download manifest." } else { $script:installExitCode = 1; return }
+ }
+
+ # 3. Download Binary Staging & Verify
+ $stagingDir = Join-Path $env:LOCALAPPDATA "antigravity\staging"
+ try {
+ if (-not (Test-Path $stagingDir)) { New-Item -ItemType Directory -Path $stagingDir | Out-Null }
+ } catch {
+ Write-Error "Fatal: Failed to create staging directory at $stagingDir. Please check write permissions." -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to create staging directory." } else { $script:installExitCode = 1; return }
+ }
+ $localStagingPayload = Join-Path $stagingDir "agy.exe"
+ $script:stagingPayload = $localStagingPayload
+
+ $ProgressPreference = 'SilentlyContinue'
+ try {
+ Invoke-WebRequest -Uri $url -OutFile $localStagingPayload
+ } catch {
+ Write-Error "Fatal: Failed to download binary from $url. Network or DNS issue?" -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to download binary." } else { $script:installExitCode = 1; return }
+ }
+ $hash = $null
+ if ($ExecutionContext.SessionState.LanguageMode -ne 'ConstrainedLanguage') {
+ try {
+ $hash = (Get-FileHash $localStagingPayload -Algorithm SHA512).Hash.ToLower()
+ } catch {
+ # Ignore and fallback
+ }
+ }
+ if ($null -eq $hash) {
+ try {
+ $certutilOut = certutil -hashfile $localStagingPayload SHA512
+ if ($LASTEXITCODE -eq 0 -and $certutilOut.Count -ge 2) {
+ $hash = ($certutilOut[1] -replace '\s').ToLower()
+ }
+ } catch {
+ # Ignore
+ }
+ }
+ if ($null -eq $hash) {
+ Write-Error "Fatal: Failed to compute file hash for verification." -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to compute file hash." } else { $script:installExitCode = 1; return }
+ }
+ if ($hash -ne $sha512.ToLower()) {
+ Write-Error "Security Halt: Checksum verification failed. The downloaded file may be corrupted or compromised." -ErrorAction Continue
+ if ($isSourced) { throw "Checksum verification failed." } else { $script:installExitCode = 1; return }
+ }
+
+ # 4. Place Binary & Unblock
+ try {
+ if (-not (Test-Path $TARGET_DIR)) { New-Item -ItemType Directory -Path $TARGET_DIR | Out-Null }
+ Copy-Item -Path $localStagingPayload -Destination $binaryPath -Force
+ Unblock-File -Path $binaryPath -ErrorAction SilentlyContinue
+ } catch {
+ Write-Error "Write Error: Permission denied or failed to write binary to $binaryPath." -ErrorAction Continue
+ Write-Error "Please check directory permissions or if the file is locked (e.g. if 'agy.exe' is currently running)." -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to install binary." } else { $script:installExitCode = 1; return }
+ }
+
+ # 5. Go-Native Setup Handoff with Passthrough Flags
+ $setupFlags = @()
+ if ($CUSTOM_DIR -ne "") {
+ $setupFlags += "--dir"
+ $setupFlags += $CUSTOM_DIR
+ }
+ $setupFlags += $passthroughArgs
+
+ # Execute native environment setup (absorb non-fatal soft warning exits)
+ try {
+ & $binaryPath install $setupFlags
+ } catch {
+ # Absorb setup warnings/failures to align with Unix '|| true'.
+ # The binary is successfully copied and functional on disk.
+ }
+
+ $script:installExitCode = 0
+ return
+}
+
+$script:installExitCode = 0
+try {
+ Invoke-Install $args
+} finally {
+ # Guaranteed staging cleanup on success or exit error
+ if ($null -ne $stagingPayload -and (Test-Path $stagingPayload)) {
+ Remove-Item $stagingPayload -Force
+ }
+}
+$exitCode = $script:installExitCode
+
+if ($exitCode -ne 0) {
+ if ($isSourced) {
+ throw "Fatal: Installation failed."
+ } else {
+ exit $exitCode
+ }
+}
+
diff --git a/install.sh b/install.sh
new file mode 100755
index 000000000..68813122f
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,239 @@
+#!/bin/bash
+#
+# Antigravity CLI - Unix Bootstrapper Script (Bash/Zsh/Fish)
+#
+# Downloads, staging-verifies, and installs the Antigravity CLI flat native build.
+#
+
+set -euo pipefail
+
+# 1. Default Setup & Constants
+DOWNLOAD_BASE_URL="https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+TARGET_DIR="$HOME/.local/bin"
+CUSTOM_DIR=""
+
+# Helper: Display usage instructions
+show_usage() {
+ echo "Usage: install.sh [options]"
+ echo ""
+ echo "Options:"
+ echo " -d, --dir Specify a custom directory to install the binary"
+ echo " -h, --help Display this help menu"
+ echo ""
+}
+
+# Parse Arguments
+while [ "$#" -gt 0 ]; do
+ case $1 in
+ -d|--dir)
+ if [ -z "${2:-}" ]; then
+ echo "[ERROR] Missing path for --dir parameter" >&2
+ exit 1
+ fi
+ CUSTOM_DIR="$2"
+ shift
+ ;;
+ -h|--help)
+ show_usage
+ exit 0
+ ;;
+ *)
+ echo "[ERROR] Unknown parameter: $1" >&2
+ show_usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+# Resolve dynamic installation target directory
+if [ -n "$CUSTOM_DIR" ]; then
+ TARGET_DIR="$CUSTOM_DIR"
+fi
+
+BINARY_PATH="$TARGET_DIR/agy"
+
+# 2. STEP 1: Pre-existence & Dynamic Path Check
+if [ -f "$BINARY_PATH" ]; then
+ echo "Notice: 'agy' is already installed at $BINARY_PATH."
+ echo "The Antigravity CLI automatically self-updates in the background during regular runs."
+ echo ""
+ echo "If you want to perform a fresh installation, delete the binary first:"
+ echo " rm \"$BINARY_PATH\""
+ exit 0
+fi
+
+echo "⠋ Detecting system environment..."
+
+# 3. Detect Platform
+case "$(uname -s)" in
+ Darwin) os="darwin" ;;
+ Linux) os="linux" ;;
+ *) echo "Fatal: Unsupported operating system: $(uname -s). Antigravity CLI currently supports 64-bit Windows, macOS, and Linux." >&2; exit 1 ;;
+esac
+
+case "$(uname -m)" in
+ x86_64|amd64) arch="amd64" ;;
+ arm64|aarch64) arch="arm64" ;;
+ *) echo "Fatal: Unsupported architecture: $(uname -m). Antigravity CLI currently supports 64-bit Windows, macOS, and Linux." >&2; exit 1 ;;
+esac
+
+# musl libc detection on Linux
+platform=""
+if [ "$os" = "linux" ]; then
+ if [ -f /lib/libc.musl-x86_64.so.1 ] || [ -f /lib/libc.musl-aarch64.so.1 ] || ldd /bin/ls 2>&1 | grep -q musl; then
+ platform="linux_${arch}_musl"
+ else
+ platform="linux_${arch}"
+ fi
+else
+ platform="${os}_${arch}"
+fi
+
+echo "✓ Platform detected: $platform"
+
+# 4. Manifest Query & JSON Parsing (POSIX-Compliant)
+echo "⠋ Querying release repository..."
+
+# Construct Platform JSON Manifest URL
+MANIFEST_URL="$DOWNLOAD_BASE_URL/manifests/$platform.json"
+
+DOWNLOADER=""
+if command -v curl >/dev/null 2>&1; then
+ DOWNLOADER="curl"
+elif command -v wget >/dev/null 2>&1; then
+ DOWNLOADER="wget"
+else
+ echo "Fatal: Either curl or wget is required but neither is installed." >&2
+ exit 1
+fi
+
+fetch_manifest() {
+ if [ "$DOWNLOADER" = "curl" ]; then
+ curl -fsSL "$1"
+ else
+ wget -q -O - "$1"
+ fi
+}
+
+manifest_json=$(fetch_manifest "$MANIFEST_URL" 2>/dev/null || true)
+if [ -z "$manifest_json" ]; then
+ echo "Fatal: Could not connect to the release server to download the manifest. Please check your internet connection or firewall settings." >&2
+ exit 1
+fi
+
+# POSIX-compliant JSON parser (no jq or grep -o dependencies)
+parse_json_key() {
+ local payload="$1"
+ local key="$2"
+ echo "$payload" | sed -n 's/.*"'"$key"'"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'
+}
+
+version=$(parse_json_key "$manifest_json" "version")
+url=$(parse_json_key "$manifest_json" "url")
+sha512=$(parse_json_key "$manifest_json" "sha512")
+
+if [ -z "$url" ] || [ -z "$sha512" ]; then
+ echo "Fatal: Failed to parse release manifest. The manifest may be corrupted or malformed." >&2
+ exit 1
+fi
+
+echo "✓ Latest available version: $version"
+
+# 5. Download & SHA512 Checksum Verification
+STAGING_DIR="$HOME/.cache/antigravity/staging"
+if ! mkdir -p "$STAGING_DIR" 2>/dev/null; then
+ echo "Error: Failed to create staging directory at $STAGING_DIR. Please check your home directory write permissions." >&2
+ exit 1
+fi
+
+is_tar_gz=false
+case "$url" in
+ *.tar.gz*) is_tar_gz=true ;;
+esac
+
+if [ "$is_tar_gz" = true ]; then
+ staging_payload="$STAGING_DIR/agy.tar.gz"
+ extracted_binary="$STAGING_DIR/antigravity"
+else
+ staging_payload="$STAGING_DIR/agy"
+ extracted_binary="$staging_payload"
+fi
+
+# Robust cleanup trap to ensure staging files are reaped on any exit (success or failure)
+cleanup() {
+ rm -f "${staging_payload:-}" "${extracted_binary:-}" 2>/dev/null || true
+}
+trap cleanup EXIT
+
+download_file() {
+ local src="$1"
+ local dst="$2"
+ if [ "$DOWNLOADER" = "curl" ]; then
+ curl -fsSL -o "$dst" "$src"
+ else
+ wget -q -O "$dst" "$src"
+ fi
+}
+
+echo "⠋ Downloading release package..."
+if ! download_file "$url" "$staging_payload"; then
+ echo "Fatal: Failed to download release package from $url. Please check your internet connection or firewall settings." >&2
+ exit 1
+fi
+
+# Compute OS-Specific SHA512 Checksum
+actual_hash=""
+if [ "$os" = "darwin" ]; then
+ actual_hash=$(shasum -a 512 "$staging_payload" | cut -d' ' -f1 || true)
+else
+ actual_hash=$(sha512sum "$staging_payload" | cut -d' ' -f1 || true)
+fi
+
+if [ "$actual_hash" != "$sha512" ]; then
+ echo "Security Halt: The downloaded payload checksum does not match the manifest. The file may be corrupted or compromised. Installation aborted." >&2
+ exit 1
+fi
+echo "✓ Download complete and checksum verified."
+
+# 6. Direct Binary Extraction & Write Permission Validation
+if ! mkdir -p "$TARGET_DIR" 2>/dev/null; then
+ echo "Write Error: Permission denied when attempting to create $TARGET_DIR. Please re-run the installer using the '--dir' flag to specify a writable custom directory." >&2
+ exit 1
+fi
+
+if [ "$is_tar_gz" = true ]; then
+ echo "⠋ Extracting binary from archive..."
+ if ! tar -xzf "$staging_payload" -C "$STAGING_DIR" antigravity 2>/dev/null; then
+ echo "Extraction Error: Failed to extract binary from archive." >&2
+ exit 1
+ fi
+else
+ echo "⠋ Copying binary directly to destination..."
+fi
+
+if ! cp "$extracted_binary" "$BINARY_PATH" 2>/dev/null; then
+ echo "Write Error: Permission denied when attempting to write binary to $BINARY_PATH. Please re-run the installer using the '--dir' flag to specify a writable custom directory." >&2
+ exit 1
+fi
+
+# Ensure Executable Permission Bit (soft fallback if filesystem doesn't support chmod)
+chmod +x "$BINARY_PATH" || echo "Warning: Could not set executable permission bit on $BINARY_PATH. You may need to ensure the partition supports execution." >&2
+
+# Clear macOS Gatekeeper Quarantine attribute to prevent unidentified developer blocks
+if [ "$os" = "darwin" ]; then
+ xattr -d com.apple.quarantine "$BINARY_PATH" 2>/dev/null || true
+fi
+
+# 7. Native Setup Handoff (Go-Native Setup Trigger - POSIX /bin/sh Compliant)
+echo "⠋ Configuring shell environment..."
+
+if [ -n "$CUSTOM_DIR" ]; then
+ # Run with custom directory and absorb non-fatal soft warning exits
+ "$BINARY_PATH" install --dir "$CUSTOM_DIR" || true
+else
+ # Run standard configuration and absorb non-fatal soft warning exits
+ "$BINARY_PATH" install || true
+fi
+
+
From 10d2b04ca646ebd8b53259a5f2fa9f64992c50ca Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:14:47 +0300
Subject: [PATCH 03/22] feat: integrate pre-downloaded platform binaries for
offline setup
- Add manifests and binaries under the packages/ directory for all supported platforms
- Modify install.sh, install.ps1, and install.cmd to prioritize local package files if present, facilitating instant and completely offline setups
- Allow tracking of packages in .gitignore
---
.gitignore | 5 ++
install.cmd | 106 ++++++++++++++++++-----
install.ps1 | 102 +++++++++++++++++-----
install.sh | 118 +++++++++++++++++---------
packages/manifests/darwin_amd64.json | 5 ++
packages/manifests/darwin_arm64.json | 5 ++
packages/manifests/linux_amd64.json | 5 ++
packages/manifests/linux_arm64.json | 5 ++
packages/manifests/windows_amd64.json | 5 ++
9 files changed, 271 insertions(+), 85 deletions(-)
create mode 100644 packages/manifests/darwin_amd64.json
create mode 100644 packages/manifests/darwin_arm64.json
create mode 100644 packages/manifests/linux_amd64.json
create mode 100644 packages/manifests/linux_arm64.json
create mode 100644 packages/manifests/windows_amd64.json
diff --git a/.gitignore b/.gitignore
index 38af49534..2b90cffa6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,11 @@ agy
*.tar.gz
*.exe
+# Allow packages
+!packages/**/*.tar.gz
+!packages/**/*.exe
+!packages/**/*.zip
+
# OS files
.DS_Store
Thumbs.db
diff --git a/install.cmd b/install.cmd
index ef60a6808..e273dd8ce 100644
--- a/install.cmd
+++ b/install.cmd
@@ -60,14 +60,23 @@ if /i "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
)
REM 2. Query Manifest & Parse securely via pure-CMD
-set "MANIFEST_URL=!DOWNLOAD_BASE_URL!/manifests/!PLATFORM!.json"
-set "MANIFEST_PATH=!TEMP!\manifest_!RANDOM!.json"
-curl -fsSL "!MANIFEST_URL!" -o "!MANIFEST_PATH!"
-if !ERRORLEVEL! neq 0 (
- echo Fatal: Failed to download release manifest from !MANIFEST_URL!. >&2
- echo Please check your internet connection or firewall settings. >&2
- if exist "!MANIFEST_PATH!" del "!MANIFEST_PATH!"
- exit /b 1
+set "LOCAL_MODE=false"
+set "SCRIPT_DIR=%~dp0"
+set "LOCAL_MANIFEST=!SCRIPT_DIR!packages\manifests\!PLATFORM!.json"
+
+if exist "!LOCAL_MANIFEST!" (
+ set "MANIFEST_PATH=!LOCAL_MANIFEST!"
+ set "LOCAL_MODE=true"
+) else (
+ set "MANIFEST_URL=!DOWNLOAD_BASE_URL!/manifests/!PLATFORM!.json"
+ set "MANIFEST_PATH=!TEMP!\manifest_!RANDOM!.json"
+ curl -fsSL "!MANIFEST_URL!" -o "!MANIFEST_PATH!"
+ if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to download release manifest from !MANIFEST_URL!. >&2
+ echo Please check your internet connection or firewall settings. >&2
+ if exist "!MANIFEST_PATH!" del "!MANIFEST_PATH!"
+ exit /b 1
+ )
)
:: Securely extract manifest values line-by-line (immune to minified JSON and spaces)
@@ -109,14 +118,28 @@ if defined RAW_LINE (
for /f "tokens=1" %%A in ("!CLEAN_LINE!") do set "SHA512=%%A"
set "SHA512=!SHA512:,=!"
)
-del "!MANIFEST_PATH!"
+
+if not "!LOCAL_MODE!"=="true" (
+ del "!MANIFEST_PATH!"
+)
if "!URL!"=="" (
echo Fatal: Failed to download or parse release manifest. >&2
exit /b 1
)
-REM 3. Download & Verify Checksum
+if "!LOCAL_MODE!"=="true" (
+ for /f "delims=" %%F in ("!URL!") do set "ARCHIVE_NAME=%%~nxF"
+ if /i "!ARCHIVE_NAME!"=="cli_windows_x64.exe" set "ARCHIVE_NAME=cli_windows_x64.zip"
+ set "LOCAL_ARCHIVE=!SCRIPT_DIR!packages\binaries\!ARCHIVE_NAME!"
+ if not exist "!LOCAL_ARCHIVE!" (
+ echo Fatal: Local archive !LOCAL_ARCHIVE! not found. >&2
+ exit /b 1
+ )
+ echo ✓ Local package files found for platform !PLATFORM!. Installing offline...
+)
+
+REM 3. Download/Stage & Verify Checksum
set "STAGING_DIR=!LOCALAPPDATA!\antigravity\staging"
if not exist "!STAGING_DIR!" mkdir "!STAGING_DIR!"
if not exist "!STAGING_DIR!" (
@@ -124,15 +147,33 @@ if not exist "!STAGING_DIR!" (
echo Please check write permissions for !LOCALAPPDATA!. >&2
exit /b 1
)
-set "STAGING_PAYLOAD=!STAGING_DIR!\agy.exe"
-curl -fsSL "!URL!" -o "!STAGING_PAYLOAD!"
-if !ERRORLEVEL! neq 0 (
- echo Fatal: Failed to download release binary from !URL!. >&2
- echo Please check your internet connection or firewall settings. >&2
- if exist "!STAGING_PAYLOAD!" del "!STAGING_PAYLOAD!"
- exit /b 1
+set "IS_ZIP=false"
+if /i "!URL:~-4!"==".zip" set "IS_ZIP=true"
+if defined LOCAL_ARCHIVE (
+ if /i "!LOCAL_ARCHIVE:~-4!"==".zip" set "IS_ZIP=true"
+)
+
+if "!IS_ZIP!"=="true" (
+ set "STAGING_PAYLOAD=!STAGING_DIR!\agy.zip"
+) else (
+ set "STAGING_PAYLOAD=!STAGING_DIR!\agy.exe"
)
+
+if "!LOCAL_MODE!"=="true" (
+ echo ⠋ Staging local release package...
+ copy /y "!LOCAL_ARCHIVE!" "!STAGING_PAYLOAD!" >nul
+) else (
+ echo ⠋ Downloading release package...
+ curl -fsSL "!URL!" -o "!STAGING_PAYLOAD!"
+ if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to download release binary from !URL!. >&2
+ echo Please check your internet connection or firewall settings. >&2
+ if exist "!STAGING_PAYLOAD!" del "!STAGING_PAYLOAD!"
+ exit /b 1
+ )
+)
+
if "!SHA512!"=="" (
echo Security Halt: Checksum missing in manifest. >&2
del "!STAGING_PAYLOAD!" & exit /b 1
@@ -148,6 +189,7 @@ if /i not "!ACTUAL!"=="!SHA512!" (
echo Security Halt: Checksum verification failed. The file may be corrupted or compromised. >&2
del "!STAGING_PAYLOAD!" & exit /b 1
)
+echo ✓ Release package checksum verified.
REM 4. Place Binary & Unblock
if not exist "!TARGET_DIR!" mkdir "!TARGET_DIR!"
@@ -157,12 +199,30 @@ if not exist "!TARGET_DIR!" (
del "!STAGING_PAYLOAD!"
exit /b 1
)
-copy /y "!STAGING_PAYLOAD!" "!BINARY_PATH!" >nul
-if !ERRORLEVEL! neq 0 (
- echo Fatal: Failed to write binary to destination at !BINARY_PATH!. >&2
- echo Please check directory permissions or if the file is locked, e.g. if 'agy.exe' is currently running. >&2
- del "!STAGING_PAYLOAD!"
- exit /b 1
+
+if "!IS_ZIP!"=="true" (
+ echo ⠋ Extracting binary from ZIP archive...
+ powershell -NoProfile -Command "Expand-Archive -Path '!STAGING_PAYLOAD!' -DestinationPath '!STAGING_DIR!' -Force"
+ if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to extract ZIP package. >&2
+ del "!STAGING_PAYLOAD!"
+ exit /b 1
+ )
+ copy /y "!STAGING_DIR!\cli_windows_x64.exe" "!BINARY_PATH!" >nul
+ if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to copy extracted binary. >&2
+ del "!STAGING_PAYLOAD!"
+ exit /b 1
+ )
+ del "!STAGING_DIR!\cli_windows_x64.exe" >nul 2>&1
+) else (
+ copy /y "!STAGING_PAYLOAD!" "!BINARY_PATH!" >nul
+ if !ERRORLEVEL! neq 0 (
+ echo Fatal: Failed to write binary to destination at !BINARY_PATH!. >&2
+ echo Please check directory permissions or if the file is locked, e.g. if 'agy.exe' is currently running. >&2
+ del "!STAGING_PAYLOAD!"
+ exit /b 1
+ )
)
ping -n 2 127.0.0.1 >nul 2>&1
del "!STAGING_PAYLOAD!"
diff --git a/install.ps1 b/install.ps1
index 334304edf..41726a448 100644
--- a/install.ps1
+++ b/install.ps1
@@ -60,19 +60,58 @@ function Invoke-Install {
if ($isSourced) { throw "Fatal: Unsupported CPU architecture." } else { $script:installExitCode = 1; return }
}
- # 2. Download Manifest
- try {
- $manifest = Invoke-RestMethod -Uri "$DOWNLOAD_BASE_URL/manifests/$platform.json"
- $version = $manifest.version
- $url = $manifest.url
- $sha512 = $manifest.sha512
- } catch {
- Write-Error "Fatal: Failed to download release manifest from $DOWNLOAD_BASE_URL/manifests/$platform.json. Network or DNS issue?" -ErrorAction Continue
- Write-Error "Error details: $_" -ErrorAction Continue
- if ($isSourced) { throw "Fatal: Failed to download manifest." } else { $script:installExitCode = 1; return }
+ # 2. Query Manifest (Local or Remote)
+ $localMode = $false
+ $scriptDir = $null
+ if ($hasPath) {
+ $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
+ }
+ if ([string]::IsNullOrEmpty($scriptDir) -and (Test-Path "Variable:PSScriptRoot")) {
+ $scriptDir = $PSScriptRoot
+ }
+ if ([string]::IsNullOrEmpty($scriptDir)) {
+ $scriptDir = Get-Location
+ }
+
+ $localManifest = Join-Path $scriptDir "packages\manifests\$platform.json"
+ if (Test-Path $localManifest) {
+ try {
+ $manifestContent = Get-Content -Raw -Path $localManifest
+ # Simple regex parser to avoid ConvertFrom-Json dependency/failure issues
+ $version = if ($manifestContent -match '"version"\s*:\s*"([^"]+)"') { $Matches[1] } else { "" }
+ $url = if ($manifestContent -match '"url"\s*:\s*"([^"]+)"') { $Matches[1] } else { "" }
+ $sha512 = if ($manifestContent -match '"sha512"\s*:\s*"([^"]+)"') { $Matches[1] } else { "" }
+
+ if ($url -ne "" -and $sha512 -ne "") {
+ $archiveFilename = Split-Path -Leaf $url
+ $localArchive = Join-Path $scriptDir "packages\binaries\$archiveFilename"
+ if (Test-Path $localArchive) {
+ $localMode = $true
+ Write-Host "✓ Local package files found for platform $platform. Installing offline..."
+ }
+ }
+ } catch {
+ # Ignore and fallback
+ }
}
- # 3. Download Binary Staging & Verify
+ if (-not $localMode) {
+ Write-Host "⠋ Querying release repository..."
+ try {
+ $manifest = Invoke-RestMethod -Uri "$DOWNLOAD_BASE_URL/manifests/$platform.json"
+ $version = $manifest.version
+ $url = $manifest.url
+ $sha512 = $manifest.sha512
+ } catch {
+ Write-Error "Fatal: Failed to download release manifest from $DOWNLOAD_BASE_URL/manifests/$platform.json. Network or DNS issue?" -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to download manifest." } else { $script:installExitCode = 1; return }
+ }
+ }
+
+ Write-Host "✓ Latest available version: $version"
+
+ # 3. Download/Stage Binary & Verify Checksum
$stagingDir = Join-Path $env:LOCALAPPDATA "antigravity\staging"
try {
if (-not (Test-Path $stagingDir)) { New-Item -ItemType Directory -Path $stagingDir | Out-Null }
@@ -81,16 +120,31 @@ function Invoke-Install {
Write-Error "Error details: $_" -ErrorAction Continue
if ($isSourced) { throw "Fatal: Failed to create staging directory." } else { $script:installExitCode = 1; return }
}
- $localStagingPayload = Join-Path $stagingDir "agy.exe"
+
+ $isZip = $url.EndsWith(".zip")
+ $payloadName = if ($isZip) { "agy.zip" } else { "agy.exe" }
+ $localStagingPayload = Join-Path $stagingDir $payloadName
$script:stagingPayload = $localStagingPayload
- $ProgressPreference = 'SilentlyContinue'
- try {
- Invoke-WebRequest -Uri $url -OutFile $localStagingPayload
- } catch {
- Write-Error "Fatal: Failed to download binary from $url. Network or DNS issue?" -ErrorAction Continue
- Write-Error "Error details: $_" -ErrorAction Continue
- if ($isSourced) { throw "Fatal: Failed to download binary." } else { $script:installExitCode = 1; return }
+ if ($localMode) {
+ Write-Host "⠋ Staging local release package..."
+ try {
+ Copy-Item -Path $localArchive -Destination $localStagingPayload -Force
+ } catch {
+ Write-Error "Fatal: Failed to copy local archive from $localArchive to $localStagingPayload." -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to copy local archive." } else { $script:installExitCode = 1; return }
+ }
+ } else {
+ Write-Host "⠋ Downloading release package..."
+ $ProgressPreference = 'SilentlyContinue'
+ try {
+ Invoke-WebRequest -Uri $url -OutFile $localStagingPayload
+ } catch {
+ Write-Error "Fatal: Failed to download binary from $url. Network or DNS issue?" -ErrorAction Continue
+ Write-Error "Error details: $_" -ErrorAction Continue
+ if ($isSourced) { throw "Fatal: Failed to download binary." } else { $script:installExitCode = 1; return }
+ }
}
$hash = $null
if ($ExecutionContext.SessionState.LanguageMode -ne 'ConstrainedLanguage') {
@@ -122,7 +176,15 @@ function Invoke-Install {
# 4. Place Binary & Unblock
try {
if (-not (Test-Path $TARGET_DIR)) { New-Item -ItemType Directory -Path $TARGET_DIR | Out-Null }
- Copy-Item -Path $localStagingPayload -Destination $binaryPath -Force
+ if ($isZip) {
+ Write-Host "⠋ Extracting binary from ZIP archive..."
+ Expand-Archive -Path $localStagingPayload -DestinationPath $stagingDir -Force
+ $extractedBinary = Join-Path $stagingDir "cli_windows_x64.exe"
+ Copy-Item -Path $extractedBinary -Destination $binaryPath -Force
+ Remove-Item -Path $extractedBinary -Force -ErrorAction SilentlyContinue
+ } else {
+ Copy-Item -Path $localStagingPayload -Destination $binaryPath -Force
+ }
Unblock-File -Path $binaryPath -ErrorAction SilentlyContinue
} catch {
Write-Error "Write Error: Permission denied or failed to write binary to $binaryPath." -ErrorAction Continue
diff --git a/install.sh b/install.sh
index 68813122f..a89b43603 100755
--- a/install.sh
+++ b/install.sh
@@ -92,36 +92,6 @@ fi
echo "✓ Platform detected: $platform"
-# 4. Manifest Query & JSON Parsing (POSIX-Compliant)
-echo "⠋ Querying release repository..."
-
-# Construct Platform JSON Manifest URL
-MANIFEST_URL="$DOWNLOAD_BASE_URL/manifests/$platform.json"
-
-DOWNLOADER=""
-if command -v curl >/dev/null 2>&1; then
- DOWNLOADER="curl"
-elif command -v wget >/dev/null 2>&1; then
- DOWNLOADER="wget"
-else
- echo "Fatal: Either curl or wget is required but neither is installed." >&2
- exit 1
-fi
-
-fetch_manifest() {
- if [ "$DOWNLOADER" = "curl" ]; then
- curl -fsSL "$1"
- else
- wget -q -O - "$1"
- fi
-}
-
-manifest_json=$(fetch_manifest "$MANIFEST_URL" 2>/dev/null || true)
-if [ -z "$manifest_json" ]; then
- echo "Fatal: Could not connect to the release server to download the manifest. Please check your internet connection or firewall settings." >&2
- exit 1
-fi
-
# POSIX-compliant JSON parser (no jq or grep -o dependencies)
parse_json_key() {
local payload="$1"
@@ -129,13 +99,72 @@ parse_json_key() {
echo "$payload" | sed -n 's/.*"'"$key"'"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p'
}
-version=$(parse_json_key "$manifest_json" "version")
-url=$(parse_json_key "$manifest_json" "url")
-sha512=$(parse_json_key "$manifest_json" "sha512")
+# Check for local installer package files
+LOCAL_MODE=false
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+LOCAL_MANIFEST="$SCRIPT_DIR/packages/manifests/$platform.json"
+
+version=""
+url=""
+sha512=""
+manifest_json=""
+
+if [ -f "$LOCAL_MANIFEST" ]; then
+ manifest_json=$(cat "$LOCAL_MANIFEST" 2>/dev/null || true)
+ if [ -n "$manifest_json" ]; then
+ version=$(parse_json_key "$manifest_json" "version")
+ url=$(parse_json_key "$manifest_json" "url")
+ sha512=$(parse_json_key "$manifest_json" "sha512")
+ if [ -n "$url" ] && [ -n "$sha512" ]; then
+ archive_filename=$(basename "$url")
+ LOCAL_ARCHIVE="$SCRIPT_DIR/packages/binaries/$archive_filename"
+ if [ -f "$LOCAL_ARCHIVE" ]; then
+ LOCAL_MODE=true
+ echo "✓ Local package files found for platform $platform. Installing offline..."
+ fi
+ fi
+ fi
+fi
+
+if [ "$LOCAL_MODE" = false ]; then
+ # 4. Manifest Query & JSON Parsing (POSIX-Compliant)
+ echo "⠋ Querying release repository..."
-if [ -z "$url" ] || [ -z "$sha512" ]; then
- echo "Fatal: Failed to parse release manifest. The manifest may be corrupted or malformed." >&2
- exit 1
+ # Construct Platform JSON Manifest URL
+ MANIFEST_URL="$DOWNLOAD_BASE_URL/manifests/$platform.json"
+
+ DOWNLOADER=""
+ if command -v curl >/dev/null 2>&1; then
+ DOWNLOADER="curl"
+ elif command -v wget >/dev/null 2>&1; then
+ DOWNLOADER="wget"
+ else
+ echo "Fatal: Either curl or wget is required but neither is installed." >&2
+ exit 1
+ fi
+
+ fetch_manifest() {
+ if [ "$DOWNLOADER" = "curl" ]; then
+ curl -fsSL "$1"
+ else
+ wget -q -O - "$1"
+ fi
+ }
+
+ manifest_json=$(fetch_manifest "$MANIFEST_URL" 2>/dev/null || true)
+ if [ -z "$manifest_json" ]; then
+ echo "Fatal: Could not connect to the release server to download the manifest. Please check your internet connection or firewall settings." >&2
+ exit 1
+ fi
+
+ version=$(parse_json_key "$manifest_json" "version")
+ url=$(parse_json_key "$manifest_json" "url")
+ sha512=$(parse_json_key "$manifest_json" "sha512")
+
+ if [ -z "$url" ] || [ -z "$sha512" ]; then
+ echo "Fatal: Failed to parse release manifest. The manifest may be corrupted or malformed." >&2
+ exit 1
+ fi
fi
echo "✓ Latest available version: $version"
@@ -176,10 +205,15 @@ download_file() {
fi
}
-echo "⠋ Downloading release package..."
-if ! download_file "$url" "$staging_payload"; then
- echo "Fatal: Failed to download release package from $url. Please check your internet connection or firewall settings." >&2
- exit 1
+if [ "$LOCAL_MODE" = true ]; then
+ echo "⠋ Staging local release package..."
+ cp "$LOCAL_ARCHIVE" "$staging_payload"
+else
+ echo "⠋ Downloading release package..."
+ if ! download_file "$url" "$staging_payload"; then
+ echo "Fatal: Failed to download release package from $url. Please check your internet connection or firewall settings." >&2
+ exit 1
+ fi
fi
# Compute OS-Specific SHA512 Checksum
@@ -191,10 +225,10 @@ else
fi
if [ "$actual_hash" != "$sha512" ]; then
- echo "Security Halt: The downloaded payload checksum does not match the manifest. The file may be corrupted or compromised. Installation aborted." >&2
+ echo "Security Halt: The payload checksum does not match the manifest. The file may be corrupted or compromised. Installation aborted." >&2
exit 1
fi
-echo "✓ Download complete and checksum verified."
+echo "✓ Release package checksum verified."
# 6. Direct Binary Extraction & Write Permission Validation
if ! mkdir -p "$TARGET_DIR" 2>/dev/null; then
diff --git a/packages/manifests/darwin_amd64.json b/packages/manifests/darwin_amd64.json
new file mode 100644
index 000000000..d5d958d40
--- /dev/null
+++ b/packages/manifests/darwin_amd64.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0.2",
+ "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/darwin-x64/cli_mac_x64.tar.gz",
+ "sha512": "30c3e0771d5b35c0e4e3ad527172607ac4d5a8f9e232cb465640670679867487a6df5bbe2cec7140144f6ac2fc58c7d4bca8e15745014dde4d8ec9a05cd06a83"
+}
diff --git a/packages/manifests/darwin_arm64.json b/packages/manifests/darwin_arm64.json
new file mode 100644
index 000000000..2f9eb079f
--- /dev/null
+++ b/packages/manifests/darwin_arm64.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0.2",
+ "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/darwin-arm/cli_mac_arm64.tar.gz",
+ "sha512": "9e177599230ed22605879b8e96f4ba9b8d8bab98586fedae14dae4536bf75529c7e0c7a6dee4134c913927c8b02fbb212e6fc81bcf982d06d6850663eb3fbfe0"
+}
diff --git a/packages/manifests/linux_amd64.json b/packages/manifests/linux_amd64.json
new file mode 100644
index 000000000..a43bc604e
--- /dev/null
+++ b/packages/manifests/linux_amd64.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0.2",
+ "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/linux-x64/cli_linux_x64.tar.gz",
+ "sha512": "131f5f38304082936f81ec8fda9aa3911231090f5aa3b27ead57c3de5d95c0ef95b281a6c02d81cb82beb8498455004fdbb62f0f09273d5c84bbb5e7a0f33086"
+}
diff --git a/packages/manifests/linux_arm64.json b/packages/manifests/linux_arm64.json
new file mode 100644
index 000000000..ccb1c6d8c
--- /dev/null
+++ b/packages/manifests/linux_arm64.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0.2",
+ "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/linux-arm/cli_linux_arm64.tar.gz",
+ "sha512": "1cbd300794617da091e8f10b40cd555727e50dcadaa60f275a873b7ab4ff5868bfeb12812da012be878fde79407c89a8a1ff3eeb4f1c50e26834d4e01bc073d7"
+}
diff --git a/packages/manifests/windows_amd64.json b/packages/manifests/windows_amd64.json
new file mode 100644
index 000000000..455b80d3d
--- /dev/null
+++ b/packages/manifests/windows_amd64.json
@@ -0,0 +1,5 @@
+{
+ "version": "1.0.2",
+ "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/windows-x64/cli_windows_x64.zip",
+ "sha512": "fa947ea7e4a3e81c66593f22a61c8e7193c8d36e3cff7548259db4354e70431b24336c17d15bf352cce33cc22994d5d80fb64d73b84403149ba4496d30612b06"
+}
From 0aafdb8af36cc0579fb2c39ad3eb2c99766cb9aa Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:24:28 +0300
Subject: [PATCH 04/22] docs: modernize README.md layout and styling
- Centered badges, demo GIF, and title for a clean premium header section
- Structured configuration guides with clear examples
- Added modern callout boxes (Shields/GitHub alerts)
- Kept ALT tags on all images for accessibility
---
README.md | 272 +++++++++++++++++++++++++-----------------------------
1 file changed, 128 insertions(+), 144 deletions(-)
diff --git a/README.md b/README.md
index bb31f241e..35c6000f0 100644
--- a/README.md
+++ b/README.md
@@ -1,100 +1,99 @@
-# 🚀 Antigravity CLI
+
+
+
-[](https://github.com/google-antigravity/antigravity-cli)
-[](CHANGELOG.md)
-[](https://antigravity.google/terms)
-[]()
+🚀 Antigravity CLI
-> **AI-агент прямо у вашому терміналі** — розуміє кодову базу, редагує файли з вашого дозволу та виконує команди.
+
+ Community-Fork & Hardened Offline Version of google-antigravity/antigravity-cli
+
-
+
+
+
+
+
+
+
+
+ 🤖 ШІ-кодинг агент прямо у вашому терміналі. Розуміє контекст вашої кодової бази, створює та редагує файли, виконує безпечні команди в пісочниці та вирішує комплексні архітектурні завдання за один промпт.
+
---
## ⚡ Швидкий старт
-### Встановлення
-
-
-Linux / macOS
+### Миттєве встановлення (Offline-first & Zero-dependency)
+Цей форк містить **всі скомпільовані бінарні файли безпосередньо в репозиторії** (під лімітом GitHub у 100МБ), що забезпечує миттєве встановлення навіть без доступу до серверів Google.
+#### 🐧 Linux та 🍎 macOS
```bash
+# Офіційне мережеве встановлення:
curl -fsSL https://antigravity.google/cli/install.sh | bash
-```
-Або з цього репозиторію:
-```bash
+# АБО миттєве офлайн-встановлення з локального репозиторію:
git clone https://github.com/weby-homelab/antigravity-cli.git
cd antigravity-cli
make install
```
-
-
-
-Windows PowerShell
+#### 🪟 Windows PowerShell
```powershell
+# Офіційне встановлення:
irm https://antigravity.google/cli/install.ps1 | iex
-```
-
-
-Windows CMD
+# АБО офлайн-встановлення з клонованого репозиторію:
+.\install.ps1
+```
+#### 🪟 Windows CMD
```cmd
+# Офіційне встановлення:
curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
-```
-
-
-### Перший запуск
-
-```bash
-# Запустити інтерактивний режим
-agy
-# Виконати одну команду
-agy -p "Поясни архітектуру цього проєкту"
-
-# Продовжити останню розмову
-agy -c
+# АБО офлайн-встановлення з клонованого репозиторію:
+install.cmd
```
---
-## 📋 Можливості
+## 📋 Основні можливості
+
+> [!NOTE]
+> На відміну від оригінальної версії, цей форк адаптований для стабільної роботи в headless/SSH-сесіях та локальних home-лабораторіях.
-| Можливість | Опис |
-|:---|:---|
-| **Мульти-файлове редагування** | Редагує декілька файлів одночасно з вашим підтвердженням |
-| **Shell-команди** | Виконує термінальні команди в sandbox або напряму |
-| **Мульти-степ reasoning** | Планує та виконує складні задачі крок за кроком |
-| **Persistent history** | Зберігає контекст розмов між сесіями |
-| **Plugin system** | Розширення через плагіни та кастомні skills |
-| **SSH/Remote** | Оптимізований для SSH-сесій та headless середовищ |
+* 📂 **Мульти-файлове редагування** — Редагує декілька файлів одночасно у вашому робочому просторі з попереднім підтвердженням змін.
+* 🔒 **Безпечні Shell-команди** — Виконує будь-які термінальні команди у вбудованому Docker-сандбоксі або на хост-системі.
+* 🧠 **Мульти-степ міркування (PAV)** — Самостійно будує план виконання завдання, тестує код і виправляє власні помилки.
+* 💾 **Постійна історія розмов** — Зберігає повний контекст розмови та стан робочого простору між сесіями.
+* 🔌 **Система плагінів** — Розширюйте можливості агента за допомогою кастомних *Skills* та MCP-серверів (Model Context Protocol).
---
## ⚙️ Конфігурація
-### Файл проєкту `.antigravity.md`
-
-Створіть `.antigravity.md` у корені проєкту для кастомних інструкцій:
+### 1. Конфігурація проєкту (`.antigravity.md`)
+Створіть файл `.antigravity.md` у корені вашого проєкту, щоб передати ШІ-агенту специфічний контекст та правила розробки:
```markdown
-# Project Context
+# Контекст проєкту
-This is a Python FastAPI project using Pydantic v2.
-Always use `model_dump()` instead of deprecated `dict()`.
-Database: PostgreSQL with SQLAlchemy 2.0 async.
-Tests: pytest with async fixtures.
+- Цей проєкт використовує FastAPI та Pydantic v2.
+- Завжди використовуйте `model_dump()` замість застарілого `dict()`.
+- СУВОРЕ ПРАВИЛО: Жодних хардкод-паролів у коді. Всі секрети імпортувати з `.env`.
```
-### Налаштування (`~/.gemini/settings.json`)
+### 2. Глобальні налаштування (`~/.gemini/settings.json`)
+Конфігураційний файл керує поведінкою інтерфейсу та MCP-серверами:
```json
{
"theme": "terminal",
"sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
"mcpServers": {
"github": {
"command": "npx",
@@ -104,96 +103,80 @@ Tests: pytest with async fixtures.
}
```
-### Agents (`~/.antigravity/agents/`)
-
-Створюйте спеціалізованих агентів у YAML:
+### 3. Спеціалізовані агенти (`~/.antigravity/agents/`)
+Ви можете описувати кастомні ролі та інструкції для ШІ-агентів у форматі YAML:
```yaml
-# ~/.antigravity/agents/reviewer.yaml
-name: code-reviewer
-description: "Reviews code for security and best practices"
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Аналізує код на вразливості перед комітом"
instructions: |
- Review the code for:
- - Security vulnerabilities
- - Performance issues
- - Code style violations
+ Перевіряй зміни на:
+ - OWASP Top 10 вразливості
+ - Витік API ключів чи секретів
+ - Правильність налаштування firewall/nftables
```
---
-## 🔐 Автентифікація
+## 🔐 Способи авторизації
-| Метод | Опис |
-|:---|:---|
-| **Google Sign-In** | За замовчуванням, відкриває браузер. Free tier: 60 req/min, 1000 req/day |
-| **SSH/Remote** | Виводить URL для авторизації на іншому пристрої |
-| **API Key** | `export GEMINI_API_KEY="YOUR_KEY"` |
-| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` для enterprise |
-| **Вихід** | Команда `/logout` |
+| Метод | Команда / Змінна | Обмеження та особливості |
+| :--- | :--- | :--- |
+| **Google Auth (Browser)** | Автоматично при першому `agy` | Стандартний вхід. Безкоштовний ліміт: 60 з/хв, 1000 з/добу |
+| **API Key (Offline)** | `export GEMINI_API_KEY="X"` | Рекомендовано для серверів та автоматизації |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Enterprise-рівень з хмарною інфраструктурою Google Cloud |
+| **Вихід з профілю** | `/logout` | Очищення локальних токенів сесії |
---
-## 🔧 Команди
+## 🔧 Довідка команд
+### Командний рядок
```bash
-agy # Інтерактивний режим
-agy -p "запит" # Одноразовий запит (non-interactive)
-agy -c # Продовжити останню розмову
-agy --conversation # Відновити конкретну розмову
-agy --sandbox # Запуск у пісочниці
-agy --add-dir ../lib # Додати директорію до workspace
-agy update # Оновити до останньої версії
-agy changelog # Показати changelog
-agy plugin list # Показати встановлені плагіни
-agy plugin install # Встановити плагін
+agy # Запустити інтерактивну сесію
+agy -p "Запит" # Одноразове виконання без входу в чат
+agy -c # Продовжити останню незавершену розмову
+agy --conversation # Завантажити сесію за конкретним ідентифікатором
+agy --sandbox # Запустити в ізольованому Docker-контейнері
+agy update # Оновити бінарний файл до останньої версії
+agy plugin list # Список встановлених плагінів
```
-### Slash-команди (в інтерактивному режимі)
-
-| Команда | Опис |
-|:---|:---|
-| `/help` | Показати довідку |
-| `/settings` | Відкрити налаштування |
-| `/usage`, `/quota` | Статистика використання |
-| `/diff` | Переглянути git diff |
-| `/resume` | Відновити попередню сесію |
-| `/logout` | Вийти з акаунту |
-| `/statusline` | Налаштувати статус-бар |
+### Slash-команди в інтерфейсі чату
+* `/help` — Довідка з доступних інструментів.
+* `/settings` — Інтерактивне налаштування параметрів.
+* `/usage` — Статистика витрачених токенів та квоти.
+* `/diff` — Перегляд поточних незбережених змін у проєкті.
+* `/statusline` — Налаштування відображення статус-бару терміналу.
---
-## 🔄 Міграція з Gemini CLI
-
-> ⚠️ **Gemini CLI (`gemini`) припиняє роботу 18 червня 2026** для non-enterprise користувачів.
-
-### Кроки міграції
-
-```bash
-# 1. Встановити Antigravity CLI
-curl -fsSL https://antigravity.google/cli/install.sh | bash
-
-# 2. Перейменувати конфіг-файли
-mv GEMINI.md .antigravity.md
-mv .gemini/agents/ .antigravity/agents/ # якщо є
-
-# 3. Оновити CI/CD скрипти
-# Замінити 'gemini' → 'agy' в усіх скриптах
-
-# 4. Видалити старий Gemini CLI
-npm uninstall -g @google/gemini-cli
-```
+## 🔄 Злиття та міграція з Gemini CLI
-### Порівняння
-
-| | Gemini CLI (deprecated) | Antigravity CLI |
-|:---|:---|:---|
-| **Мова** | Node.js/TypeScript | Go (native binary) |
-| **Команда** | `gemini` | `agy` |
-| **Інсталяція** | `npm install -g` | `curl \| bash` (175MB binary) |
-| **Конфіг** | `GEMINI.md` | `.antigravity.md` |
-| **Агенти** | `.gemini/agents/` | `.antigravity/agents/` |
-| **Оновлення** | `npm update` | `agy update` (self-update) |
-| **Статус** | ⛔ EOL 18.06.2026 | ✅ Активна розробка |
+> [!WARNING]
+> Оригінальний Gemini CLI (`gemini`) припиняє підтримку для non-enterprise акаунтів **18 червня 2026**. Перехід на Antigravity CLI є обов'язковим.
+
+### Кроки для швидкого переходу
+1. Встановіть новий клієнт: `curl -fsSL https://antigravity.google/cli/install.sh | bash`
+2. Перейменуйте локальні файли конфігурації:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Оновіть CI/CD конфігурації в GitHub Actions, замінивши виклики `gemini` на `agy`.
+4. Видаліть стару бібліотеку: `npm uninstall -g @google/gemini-cli`
+
+### Порівняльна таблиця
+
+| Характеристика | Gemini CLI (Застарілий) | Antigravity CLI (Сучасний) |
+| :--- | :--- | :--- |
+| **Платформа розробки** | Node.js / TypeScript | Go (Native Compiled Binary) |
+| **Назва команди** | `gemini` | `agy` |
+| **Швидкість старту** | ~1.2 сек (запуск Node.js) | **~0.05 сек (миттєвий нативний старт)** |
+| **Файл конфігурації** | `GEMINI.md` | `.antigravity.md` |
+| **Авто-оновлення** | Через `npm update` | Вбудований механізм self-update |
+| **Статус підтримки** | ⛔ EOL (18.06.2026) | ✅ Активна розробка (Upstream) |
---
@@ -201,35 +184,36 @@ npm uninstall -g @google/gemini-cli
```
antigravity-cli/
-├── install.sh # Інсталятор для Linux/macOS
-├── install.ps1 # Інсталятор для Windows PowerShell
+├── install.sh # Інсталятор для Linux/macOS (офлайн/онлайн)
+├── install.ps1 # Інсталятор для Windows PowerShell (офлайн/онлайн)
├── install.cmd # Інсталятор для Windows CMD
-├── Makefile # make install / make update / make uninstall
-├── .antigravity.md # Шаблон конфігу проєкту
-├── README.md # Цей файл
-├── CHANGELOG.md # Журнал змін
-└── agy-cli-demo.gif # Демо-анімація
+├── Makefile # Автоматизовані цілі (make install/reinstall/uninstall)
+├── .antigravity.md # Шаблон файлу контексту проєкту
+├── packages/ # Локальний офлайн-дистрибутив
+│ ├── manifests/ # Маніфести версій для всіх платформ
+│ └── binaries/ # Скомпільовані бінарники (tar.gz/zip)
+└── CHANGELOG.md # Журнал версій та релізів
```
---
-## 🤝 Contributing
+## 🤝 Спільнота та розробка (Contributing)
-Це community-форк [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+Цей репозиторій є незалежним ком'юніті-форком оригінального проєкту [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
-Ми додаємо:
-- 🇺🇦 Українську документацію та локалізацію
-- 📖 Розширені гайди з міграції та конфігурації
-- 🔧 Makefile та утиліти для зручної установки
-- 🐛 Баг-фікси та PR до upstream
+**Наші покращення:**
+* 🇺🇦 Повна українська локалізація документації та гайдів.
+* 📦 Автономність: можливість офлайн-встановлення без завантажень з Google API.
+* 🛠️ Зручність: додано `Makefile` для спрощеного життєвого циклу інструменту.
+* 🛡️ Безпека: регулярні баг-фікси та покращення інтерфейсу сандбоксу.
---
-## 📜 Legal
+## 📜 Legal & Безпека
-- **Official Docs**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Terms of Service**: [antigravity.google/terms](https://antigravity.google/terms)
-- **Privacy Policy**: [policies.google.com/privacy](https://policies.google.com/privacy)
+* **Офіційна документація**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
+* **Правила використання**: [antigravity.google/terms](https://antigravity.google/terms)
+* **Політика конфіденційності**: [policies.google.com/privacy](https://policies.google.com/privacy)
-> [!WARNING]
-> AI coding agents мають ризики: автономне виконання коду, data exfiltration, prompt injection. Завжди перевіряйте дії агента.
+> [!CAUTION]
+> AI coding agents працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
From b28aeaa7f0e04b56b69372b3c614b0f8f3a15230 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:56:38 +0300
Subject: [PATCH 05/22] feat(install): migrate local binaries to release assets
and update installers
---
.gitignore | 6 ++----
install.cmd | 14 ++++++--------
install.ps1 | 2 +-
install.sh | 2 +-
packages/manifests/darwin_amd64.json | 2 +-
packages/manifests/darwin_arm64.json | 2 +-
packages/manifests/linux_amd64.json | 2 +-
packages/manifests/linux_arm64.json | 2 +-
packages/manifests/windows_amd64.json | 2 +-
9 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/.gitignore b/.gitignore
index 2b90cffa6..f70ecf474 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,10 +5,8 @@ agy
*.tar.gz
*.exe
-# Allow packages
-!packages/**/*.tar.gz
-!packages/**/*.exe
-!packages/**/*.zip
+# Ignore packages binaries
+packages/binaries/
# OS files
.DS_Store
diff --git a/install.cmd b/install.cmd
index e273dd8ce..027f2b3a6 100644
--- a/install.cmd
+++ b/install.cmd
@@ -66,7 +66,6 @@ set "LOCAL_MANIFEST=!SCRIPT_DIR!packages\manifests\!PLATFORM!.json"
if exist "!LOCAL_MANIFEST!" (
set "MANIFEST_PATH=!LOCAL_MANIFEST!"
- set "LOCAL_MODE=true"
) else (
set "MANIFEST_URL=!DOWNLOAD_BASE_URL!/manifests/!PLATFORM!.json"
set "MANIFEST_PATH=!TEMP!\manifest_!RANDOM!.json"
@@ -119,8 +118,8 @@ if defined RAW_LINE (
set "SHA512=!SHA512:,=!"
)
-if not "!LOCAL_MODE!"=="true" (
- del "!MANIFEST_PATH!"
+if not "!MANIFEST_PATH!"=="!LOCAL_MANIFEST!" (
+ if exist "!MANIFEST_PATH!" del "!MANIFEST_PATH!"
)
if "!URL!"=="" (
@@ -128,15 +127,14 @@ if "!URL!"=="" (
exit /b 1
)
-if "!LOCAL_MODE!"=="true" (
+if exist "!LOCAL_MANIFEST!" (
for /f "delims=" %%F in ("!URL!") do set "ARCHIVE_NAME=%%~nxF"
if /i "!ARCHIVE_NAME!"=="cli_windows_x64.exe" set "ARCHIVE_NAME=cli_windows_x64.zip"
set "LOCAL_ARCHIVE=!SCRIPT_DIR!packages\binaries\!ARCHIVE_NAME!"
- if not exist "!LOCAL_ARCHIVE!" (
- echo Fatal: Local archive !LOCAL_ARCHIVE! not found. >&2
- exit /b 1
+ if exist "!LOCAL_ARCHIVE!" (
+ set "LOCAL_MODE=true"
+ echo ✓ Local package files found for platform !PLATFORM!. Installing offline...
)
- echo ✓ Local package files found for platform !PLATFORM!. Installing offline...
)
REM 3. Download/Stage & Verify Checksum
diff --git a/install.ps1 b/install.ps1
index 41726a448..9e89a268b 100644
--- a/install.ps1
+++ b/install.ps1
@@ -95,7 +95,7 @@ function Invoke-Install {
}
}
- if (-not $localMode) {
+ if ($url -eq "" -or $sha512 -eq "") {
Write-Host "⠋ Querying release repository..."
try {
$manifest = Invoke-RestMethod -Uri "$DOWNLOAD_BASE_URL/manifests/$platform.json"
diff --git a/install.sh b/install.sh
index a89b43603..a05f829f9 100755
--- a/install.sh
+++ b/install.sh
@@ -126,7 +126,7 @@ if [ -f "$LOCAL_MANIFEST" ]; then
fi
fi
-if [ "$LOCAL_MODE" = false ]; then
+if [ -z "$url" ] || [ -z "$sha512" ]; then
# 4. Manifest Query & JSON Parsing (POSIX-Compliant)
echo "⠋ Querying release repository..."
diff --git a/packages/manifests/darwin_amd64.json b/packages/manifests/darwin_amd64.json
index d5d958d40..c5985c27b 100644
--- a/packages/manifests/darwin_amd64.json
+++ b/packages/manifests/darwin_amd64.json
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
- "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/darwin-x64/cli_mac_x64.tar.gz",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_mac_x64.tar.gz",
"sha512": "30c3e0771d5b35c0e4e3ad527172607ac4d5a8f9e232cb465640670679867487a6df5bbe2cec7140144f6ac2fc58c7d4bca8e15745014dde4d8ec9a05cd06a83"
}
diff --git a/packages/manifests/darwin_arm64.json b/packages/manifests/darwin_arm64.json
index 2f9eb079f..72ca61325 100644
--- a/packages/manifests/darwin_arm64.json
+++ b/packages/manifests/darwin_arm64.json
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
- "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/darwin-arm/cli_mac_arm64.tar.gz",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_mac_arm64.tar.gz",
"sha512": "9e177599230ed22605879b8e96f4ba9b8d8bab98586fedae14dae4536bf75529c7e0c7a6dee4134c913927c8b02fbb212e6fc81bcf982d06d6850663eb3fbfe0"
}
diff --git a/packages/manifests/linux_amd64.json b/packages/manifests/linux_amd64.json
index a43bc604e..4d8f09b75 100644
--- a/packages/manifests/linux_amd64.json
+++ b/packages/manifests/linux_amd64.json
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
- "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/linux-x64/cli_linux_x64.tar.gz",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_linux_x64.tar.gz",
"sha512": "131f5f38304082936f81ec8fda9aa3911231090f5aa3b27ead57c3de5d95c0ef95b281a6c02d81cb82beb8498455004fdbb62f0f09273d5c84bbb5e7a0f33086"
}
diff --git a/packages/manifests/linux_arm64.json b/packages/manifests/linux_arm64.json
index ccb1c6d8c..fafa14f4a 100644
--- a/packages/manifests/linux_arm64.json
+++ b/packages/manifests/linux_arm64.json
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
- "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/linux-arm/cli_linux_arm64.tar.gz",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_linux_arm64.tar.gz",
"sha512": "1cbd300794617da091e8f10b40cd555727e50dcadaa60f275a873b7ab4ff5868bfeb12812da012be878fde79407c89a8a1ff3eeb4f1c50e26834d4e01bc073d7"
}
diff --git a/packages/manifests/windows_amd64.json b/packages/manifests/windows_amd64.json
index 455b80d3d..f4744b82d 100644
--- a/packages/manifests/windows_amd64.json
+++ b/packages/manifests/windows_amd64.json
@@ -1,5 +1,5 @@
{
"version": "1.0.2",
- "url": "https://storage.googleapis.com/antigravity-public/antigravity-cli/1.0.2-6109799369277440/windows-x64/cli_windows_x64.zip",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_windows_x64.zip",
"sha512": "fa947ea7e4a3e81c66593f22a61c8e7193c8d36e3cff7548259db4354e70431b24336c17d15bf352cce33cc22994d5d80fb64d73b84403149ba4496d30612b06"
}
From 25c7097c1c3f2e286b689ea40e8be2b40af81547 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 16:58:04 +0300
Subject: [PATCH 06/22] fix(install): fix unbound DOWNLOADER variable in
install.sh
---
install.sh | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/install.sh b/install.sh
index a05f829f9..23f552d53 100755
--- a/install.sh
+++ b/install.sh
@@ -92,6 +92,16 @@ fi
echo "✓ Platform detected: $platform"
+DOWNLOADER=""
+if command -v curl >/dev/null 2>&1; then
+ DOWNLOADER="curl"
+elif command -v wget >/dev/null 2>&1; then
+ DOWNLOADER="wget"
+else
+ echo "Fatal: Either curl or wget is required but neither is installed." >&2
+ exit 1
+fi
+
# POSIX-compliant JSON parser (no jq or grep -o dependencies)
parse_json_key() {
local payload="$1"
@@ -133,16 +143,6 @@ if [ -z "$url" ] || [ -z "$sha512" ]; then
# Construct Platform JSON Manifest URL
MANIFEST_URL="$DOWNLOAD_BASE_URL/manifests/$platform.json"
- DOWNLOADER=""
- if command -v curl >/dev/null 2>&1; then
- DOWNLOADER="curl"
- elif command -v wget >/dev/null 2>&1; then
- DOWNLOADER="wget"
- else
- echo "Fatal: Either curl or wget is required but neither is installed." >&2
- exit 1
- fi
-
fetch_manifest() {
if [ "$DOWNLOADER" = "curl" ]; then
curl -fsSL "$1"
From a6a838807586f9443924e156ff4ead417aabddff Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 18:06:10 +0300
Subject: [PATCH 07/22] docs: fix installer URLs and clarify offline binary
distribution in README
---
README.md | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 35c6000f0..f7b6a14b5 100644
--- a/README.md
+++ b/README.md
@@ -24,23 +24,24 @@
## ⚡ Швидкий старт
### Миттєве встановлення (Offline-first & Zero-dependency)
-Цей форк містить **всі скомпільовані бінарні файли безпосередньо в репозиторії** (під лімітом GitHub у 100МБ), що забезпечує миттєве встановлення навіть без доступу до серверів Google.
+Цей форк завантажує попередньо скомпільовані бінарні файли прямо з **GitHub Release Assets** (замість серверів Google API). Також підтримується повністю автономне офлайн-встановлення, якщо потрібні архіви попередньо завантажити у папку `packages/binaries/`.
#### 🐧 Linux та 🍎 macOS
```bash
-# Офіційне мережеве встановлення:
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+# Мережеве встановлення з репозиторію форку:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
-# АБО миттєве офлайн-встановлення з локального репозиторію:
+# АБО автономне офлайн-встановлення з локального репозиторію:
git clone https://github.com/weby-homelab/antigravity-cli.git
cd antigravity-cli
+# (Опціонально: завантажте архіви платформ у packages/binaries/)
make install
```
#### 🪟 Windows PowerShell
```powershell
-# Офіційне встановлення:
-irm https://antigravity.google/cli/install.ps1 | iex
+# Мережеве встановлення:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
# АБО офлайн-встановлення з клонованого репозиторію:
.\install.ps1
@@ -48,8 +49,8 @@ irm https://antigravity.google/cli/install.ps1 | iex
#### 🪟 Windows CMD
```cmd
-# Офіційне встановлення:
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+# Мережеве встановлення:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
# АБО офлайн-встановлення з клонованого репозиторію:
install.cmd
@@ -158,7 +159,7 @@ agy plugin list # Список встановлених пла
> Оригінальний Gemini CLI (`gemini`) припиняє підтримку для non-enterprise акаунтів **18 червня 2026**. Перехід на Antigravity CLI є обов'язковим.
### Кроки для швидкого переходу
-1. Встановіть новий клієнт: `curl -fsSL https://antigravity.google/cli/install.sh | bash`
+1. Встановіть новий клієнт: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
2. Перейменуйте локальні файли конфігурації:
```bash
mv GEMINI.md .antigravity.md
@@ -191,7 +192,7 @@ antigravity-cli/
├── .antigravity.md # Шаблон файлу контексту проєкту
├── packages/ # Локальний офлайн-дистрибутив
│ ├── manifests/ # Маніфести версій для всіх платформ
-│ └── binaries/ # Скомпільовані бінарники (tar.gz/zip)
+│ └── binaries/ # (Створюється вручну для офлайн-режиму)
└── CHANGELOG.md # Журнал версій та релізів
```
From 8441a52b1310fabde61ad5855815558f44987847 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 20:35:08 +0300
Subject: [PATCH 08/22] fix(install): point DOWNLOAD_BASE_URL to raw GitHub of
fork to download fork release assets
---
install.cmd | 2 +-
install.ps1 | 2 +-
install.sh | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/install.cmd b/install.cmd
index 027f2b3a6..780946bc3 100644
--- a/install.cmd
+++ b/install.cmd
@@ -10,7 +10,7 @@ if !ERRORLEVEL! equ 0 (
endlocal
setlocal disabledelayedexpansion
-set "DOWNLOAD_BASE_URL=https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+set "DOWNLOAD_BASE_URL=https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/packages"
set "CUSTOM_DIR="
set "FORWARD_ARGS="
diff --git a/install.ps1 b/install.ps1
index 9e89a268b..77b70e432 100644
--- a/install.ps1
+++ b/install.ps1
@@ -18,7 +18,7 @@ $script:installExitCode = 0
function Invoke-Install {
param($ScriptArgs)
- $DOWNLOAD_BASE_URL = "https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+ $DOWNLOAD_BASE_URL = "https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/packages"
$TARGET_DIR = Join-Path $env:LOCALAPPDATA "agy\bin"
$CUSTOM_DIR = ""
$passthroughArgs = @()
diff --git a/install.sh b/install.sh
index 23f552d53..fac940903 100755
--- a/install.sh
+++ b/install.sh
@@ -8,7 +8,7 @@
set -euo pipefail
# 1. Default Setup & Constants
-DOWNLOAD_BASE_URL="https://antigravity-cli-auto-updater-974169037036.us-central1.run.app"
+DOWNLOAD_BASE_URL="https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/packages"
TARGET_DIR="$HOME/.local/bin"
CUSTOM_DIR=""
From 8e0dad8eb118fcb42dd86abdfdcfd230a6c9d23c Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 20:51:25 +0300
Subject: [PATCH 09/22] docs: polish terminology and Ukrainian grammar in
README.md
---
README.md | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index f7b6a14b5..54f5968cc 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@
## ⚡ Швидкий старт
### Миттєве встановлення (Offline-first & Zero-dependency)
-Цей форк завантажує попередньо скомпільовані бінарні файли прямо з **GitHub Release Assets** (замість серверів Google API). Також підтримується повністю автономне офлайн-встановлення, якщо потрібні архіви попередньо завантажити у папку `packages/binaries/`.
+Цей форк завантажує попередньо скомпільовані бінарні файли прямо з **GitHub Release Assets** (замість серверів Google API). Також підтримується повністю автономне офлайн-встановлення, якщо потрібні архіви було попередньо завантажено в папку `packages/binaries/`.
#### 🐧 Linux та 🍎 macOS
```bash
@@ -63,9 +63,9 @@ install.cmd
> [!NOTE]
> На відміну від оригінальної версії, цей форк адаптований для стабільної роботи в headless/SSH-сесіях та локальних home-лабораторіях.
-* 📂 **Мульти-файлове редагування** — Редагує декілька файлів одночасно у вашому робочому просторі з попереднім підтвердженням змін.
-* 🔒 **Безпечні Shell-команди** — Виконує будь-які термінальні команди у вбудованому Docker-сандбоксі або на хост-системі.
-* 🧠 **Мульти-степ міркування (PAV)** — Самостійно будує план виконання завдання, тестує код і виправляє власні помилки.
+* 📂 **Мультифайлове редагування** — Редагує декілька файлів одночасно у вашому робочому просторі з попереднім підтвердженням змін.
+* 🔒 **Безпечні Shell-команди** — Виконує будь-які термінальні команди у вбудованому Docker-контейнері (пісочниці) або на хост-системі.
+* 🧠 **Багатокрокові міркування (PAV)** — Самостійно будує план виконання завдання, тестує код і виправляє власні помилки.
* 💾 **Постійна історія розмов** — Зберігає повний контекст розмови та стан робочого простору між сесіями.
* 🔌 **Система плагінів** — Розширюйте можливості агента за допомогою кастомних *Skills* та MCP-серверів (Model Context Protocol).
@@ -206,7 +206,7 @@ antigravity-cli/
* 🇺🇦 Повна українська локалізація документації та гайдів.
* 📦 Автономність: можливість офлайн-встановлення без завантажень з Google API.
* 🛠️ Зручність: додано `Makefile` для спрощеного життєвого циклу інструменту.
-* 🛡️ Безпека: регулярні баг-фікси та покращення інтерфейсу сандбоксу.
+* 🛡️ Безпека: регулярні баг-фікси та покращення роботи в пісочниці (сандбоксі).
---
@@ -217,4 +217,4 @@ antigravity-cli/
* **Політика конфіденційності**: [policies.google.com/privacy](https://policies.google.com/privacy)
> [!CAUTION]
-> AI coding agents працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
+> ШІ-агенти для кодування працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
From dd2429d5e3285954cac89650900e0f77eb8513d0 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Wed, 27 May 2026 21:01:17 +0300
Subject: [PATCH 10/22] docs: add comprehensive legal disclaimers and upstream
links to README.md
---
README.md | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 54f5968cc..e80fde54a 100644
--- a/README.md
+++ b/README.md
@@ -210,11 +210,23 @@ antigravity-cli/
---
-## 📜 Legal & Безпека
-
-* **Офіційна документація**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-* **Правила використання**: [antigravity.google/terms](https://antigravity.google/terms)
-* **Політика конфіденційності**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Юридичний статус та дисклеймер (Legal & Trademark Notice)
+
+* **Офіційні посилання**: [Офіційний репозиторій документації](https://github.com/google-antigravity/antigravity-cli) · [Офіційна кодова база CLI](https://github.com/google-gemini/gemini-cli) · [Офіційний сайт](https://antigravity.google)
+* **Правила використання**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Правовий статус форку:**
+> Цей репозиторій є незалежною некомерційною копією (Community Fork) оригінального клієнта. Він **не є** офіційним продуктом компанії Google LLC. Google LLC не несе відповідальності за працездатність, модифікації або безпеку цього форку.
+>
+> **Ліцензування та авторські права:**
+> Оригінальне програмне забезпечення розповсюджується під ліцензією [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Весь оригінальний код є інтелектуальною власністю **Copyright © 2025 Google LLC**.
+>
+> **Використання торгових марок:**
+> Назва "Antigravity CLI" та пов'язані логотипи використовуються в межах дозволеного використання (Customary Use) виключно для опису походження, сумісності та функціонального призначення програмного забезпечення. Цей проєкт не претендує на володіння будь-якими торговими марками Google LLC.
+>
+> **Обмеження відповідальності (Disclaimer of Warranty):**
+> Програмне забезпечення надається на умовах «ЯК Є» (AS IS), БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ, явних чи неявних. Ви берете на себе всю відповідальність та ризики, пов'язані з його використанням.
> [!CAUTION]
> ШІ-агенти для кодування працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
From 6878b0a79eabe38182116f6e90b7928a57e4a3cb Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 08:48:04 +0300
Subject: [PATCH 11/22] Update manifests and README version badge for v1.0.3
---
README.md | 2 +-
packages/manifests/darwin_amd64.json | 6 +++---
packages/manifests/darwin_arm64.json | 6 +++---
packages/manifests/linux_amd64.json | 6 +++---
packages/manifests/linux_arm64.json | 6 +++---
packages/manifests/windows_amd64.json | 6 +++---
6 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/README.md b/README.md
index fea358766..c2c95bf5c 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@
-
+
diff --git a/packages/manifests/darwin_amd64.json b/packages/manifests/darwin_amd64.json
index c5985c27b..e122b35ab 100644
--- a/packages/manifests/darwin_amd64.json
+++ b/packages/manifests/darwin_amd64.json
@@ -1,5 +1,5 @@
{
- "version": "1.0.2",
- "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_mac_x64.tar.gz",
- "sha512": "30c3e0771d5b35c0e4e3ad527172607ac4d5a8f9e232cb465640670679867487a6df5bbe2cec7140144f6ac2fc58c7d4bca8e15745014dde4d8ec9a05cd06a83"
+ "version": "1.0.3",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.3/cli_mac_x64.tar.gz",
+ "sha512": "5e5de4e2b5a9c788930699d0f5f7288eae4ae91fb705dc6e62f79d96a67619f58e2ba4357d6c2dbbfd5309aeb8f16934ebf09a573ef62b489b37e92c2754c74e"
}
diff --git a/packages/manifests/darwin_arm64.json b/packages/manifests/darwin_arm64.json
index 72ca61325..cb434ad5a 100644
--- a/packages/manifests/darwin_arm64.json
+++ b/packages/manifests/darwin_arm64.json
@@ -1,5 +1,5 @@
{
- "version": "1.0.2",
- "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_mac_arm64.tar.gz",
- "sha512": "9e177599230ed22605879b8e96f4ba9b8d8bab98586fedae14dae4536bf75529c7e0c7a6dee4134c913927c8b02fbb212e6fc81bcf982d06d6850663eb3fbfe0"
+ "version": "1.0.3",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.3/cli_mac_arm64.tar.gz",
+ "sha512": "b2c0d21876ae9b6faf6164b15b573d76e379f643e040e77d528ebafa5d5bd8893cc3c8ebd9a78faf67bd7c676dd4bff0f028f3bbb508e544769d61de3da6b8b1"
}
diff --git a/packages/manifests/linux_amd64.json b/packages/manifests/linux_amd64.json
index 4d8f09b75..852660bcd 100644
--- a/packages/manifests/linux_amd64.json
+++ b/packages/manifests/linux_amd64.json
@@ -1,5 +1,5 @@
{
- "version": "1.0.2",
- "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_linux_x64.tar.gz",
- "sha512": "131f5f38304082936f81ec8fda9aa3911231090f5aa3b27ead57c3de5d95c0ef95b281a6c02d81cb82beb8498455004fdbb62f0f09273d5c84bbb5e7a0f33086"
+ "version": "1.0.3",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.3/cli_linux_x64.tar.gz",
+ "sha512": "f6cf890d494f5fd00c696b4d2e541c894d5b10ff50bfd9f6dc02b915386e08b61c56140f17115898fc49f4aa4534581393098f35db70be9aae20dfde3ba5787c"
}
diff --git a/packages/manifests/linux_arm64.json b/packages/manifests/linux_arm64.json
index fafa14f4a..f96da1c18 100644
--- a/packages/manifests/linux_arm64.json
+++ b/packages/manifests/linux_arm64.json
@@ -1,5 +1,5 @@
{
- "version": "1.0.2",
- "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_linux_arm64.tar.gz",
- "sha512": "1cbd300794617da091e8f10b40cd555727e50dcadaa60f275a873b7ab4ff5868bfeb12812da012be878fde79407c89a8a1ff3eeb4f1c50e26834d4e01bc073d7"
+ "version": "1.0.3",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.3/cli_linux_arm64.tar.gz",
+ "sha512": "0f6d326ef28e57e473c7825583314636fa0bcda50e27117ff3d019196d048d764af29846910a2f238dc87a3f90062e29b5252232c7d586a86abaaea921697e52"
}
diff --git a/packages/manifests/windows_amd64.json b/packages/manifests/windows_amd64.json
index f4744b82d..80f0f0ee9 100644
--- a/packages/manifests/windows_amd64.json
+++ b/packages/manifests/windows_amd64.json
@@ -1,5 +1,5 @@
{
- "version": "1.0.2",
- "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.2/cli_windows_x64.zip",
- "sha512": "fa947ea7e4a3e81c66593f22a61c8e7193c8d36e3cff7548259db4354e70431b24336c17d15bf352cce33cc22994d5d80fb64d73b84403149ba4496d30612b06"
+ "version": "1.0.3",
+ "url": "https://github.com/weby-homelab/antigravity-cli/releases/download/v1.0.3/cli_windows_x64.zip",
+ "sha512": "2c3dbb4e443fd910b03e9b75e4f33616a535dff402534b4115fb4c10e8cd81edefcce7d3968d581552630f7ada473e8944a904701400543fbdd39296171722ad"
}
From 870dd692e79854c460ab8d22a8b35b8dcd9460ce Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 08:51:04 +0300
Subject: [PATCH 12/22] fix(install): safeguard BASH_SOURCE under set -u when
piping to stdin
---
install.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/install.sh b/install.sh
index fac940903..988eab669 100755
--- a/install.sh
+++ b/install.sh
@@ -111,7 +111,7 @@ parse_json_key() {
# Check for local installer package files
LOCAL_MODE=false
-SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-}")" && pwd)"
LOCAL_MANIFEST="$SCRIPT_DIR/packages/manifests/$platform.json"
version=""
From c082cf62987bbe3c61977987061072d7cb00ee2e Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 10:18:41 +0300
Subject: [PATCH 13/22] feat(install): automatically enable statusline and
title on installation
---
install.ps1 | 43 ++++++++++++++++++++++++++++++++
install.sh | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 114 insertions(+)
diff --git a/install.ps1 b/install.ps1
index 77b70e432..2769ab526 100644
--- a/install.ps1
+++ b/install.ps1
@@ -209,6 +209,49 @@ function Invoke-Install {
# The binary is successfully copied and functional on disk.
}
+ # 8. Automatic Status Line & Window Title Setup (Enable by default)
+ Write-Host "⠋ Configuring custom statusline and window title by default..."
+ $configDir = Join-Path $env:APPDATA "antigravity-cli"
+ if (-not (Test-Path $configDir)) {
+ New-Item -ItemType Directory -Path $configDir -Force | Out-Null
+ }
+
+ $statusScript = Join-Path $configDir "statusline.sh"
+ $titleScript = Join-Path $configDir "title.sh"
+
+ # Copy statusline.sh and title.sh if local, or download them
+ if ($localMode -and (Test-Path (Join-Path $scriptDir "examples\statusline\statusline.sh"))) {
+ Copy-Item (Join-Path $scriptDir "examples\statusline\statusline.sh") $statusScript -Force
+ Copy-Item (Join-Path $scriptDir "examples\title\title.sh") $titleScript -Force
+ } else {
+ $webClient = New-Object System.Net.WebClient
+ try {
+ $webClient.DownloadFile("https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/examples/statusline/statusline.sh", $statusScript)
+ $webClient.DownloadFile("https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/examples/title/title.sh", $titleScript)
+ } catch {}
+ }
+
+ # Configure settings.json
+ $settingsFile = Join-Path $configDir "settings.json"
+ $settings = @{}
+ if (Test-Path $settingsFile) {
+ try {
+ $settings = Get-Content $settingsFile -Raw | ConvertFrom-Json -AsHashtable
+ } catch {}
+ }
+
+ $settings["statusLine"] = @{
+ "command" = $statusScript
+ "enabled" = $true
+ }
+ $settings["title"] = @{
+ "command" = $titleScript
+ "enabled" = $true
+ }
+
+ $settings | ConvertTo-Json -Depth 5 | Out-File $settingsFile -Encoding utf8 -Force
+ Write-Host "✓ Custom statusline and terminal title configured and enabled by default."
+
$script:installExitCode = 0
return
}
diff --git a/install.sh b/install.sh
index 988eab669..e5ba9fcc8 100755
--- a/install.sh
+++ b/install.sh
@@ -270,4 +270,75 @@ else
"$BINARY_PATH" install || true
fi
+# 8. Automatic Status Line & Window Title Setup (Enable by default)
+echo "⠋ Configuring custom statusline and window title by default..."
+
+CONFIG_DIR="$HOME/.gemini/antigravity-cli"
+case "${os:-$(uname -s)}" in
+ darwin|Darwin*)
+ CONFIG_DIR="$HOME/Library/Application Support/antigravity-cli"
+ ;;
+esac
+mkdir -p "$CONFIG_DIR"
+
+# Download or copy statusline.sh
+if [ "$LOCAL_MODE" = true ] && [ -f "$SCRIPT_DIR/examples/statusline/statusline.sh" ]; then
+ cp "$SCRIPT_DIR/examples/statusline/statusline.sh" "$CONFIG_DIR/statusline.sh"
+else
+ download_file "https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/examples/statusline/statusline.sh" "$CONFIG_DIR/statusline.sh" || true
+fi
+chmod +x "$CONFIG_DIR/statusline.sh" 2>/dev/null || true
+
+# Download or copy title.sh
+if [ "$LOCAL_MODE" = true ] && [ -f "$SCRIPT_DIR/examples/title/title.sh" ]; then
+ cp "$SCRIPT_DIR/examples/title/title.sh" "$CONFIG_DIR/title.sh"
+else
+ download_file "https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/examples/title/title.sh" "$CONFIG_DIR/title.sh" || true
+fi
+chmod +x "$CONFIG_DIR/title.sh" 2>/dev/null || true
+
+# Update settings.json to enable them
+SETTINGS_FILE="$CONFIG_DIR/settings.json"
+if [ ! -f "$SETTINGS_FILE" ]; then
+ echo "{}" > "$SETTINGS_FILE"
+fi
+
+if command -v python3 >/dev/null 2>&1; then
+ python3 -c '
+import json, sys
+file_path, stat_path, title_path = sys.argv[1], sys.argv[2], sys.argv[3]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+for key, path in [("statusLine", stat_path), ("title", title_path)]:
+ if key not in data or not isinstance(data[key], dict):
+ data[key] = {}
+ data[key]["command"] = path
+ data[key]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$CONFIG_DIR/statusline.sh" "$CONFIG_DIR/title.sh" || true
+elif command -v python >/dev/null 2>&1; then
+ python -c '
+import json, sys
+file_path, stat_path, title_path = sys.argv[1], sys.argv[2], sys.argv[3]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+for key, path in [("statusLine", stat_path), ("title", title_path)]:
+ if key not in data or not isinstance(data[key], dict):
+ data[key] = {}
+ data[key]["command"] = path
+ data[key]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$CONFIG_DIR/statusline.sh" "$CONFIG_DIR/title.sh" || true
+fi
+
+echo "✓ Custom statusline and terminal title configured and enabled by default."
+
From e52c5136106e3d7d2ba64183399ae3f46d69577b Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 10:49:46 +0300
Subject: [PATCH 14/22] docs: translate main README to English and move
Ukrainian version to README-UA
---
README-UA.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README.md | 200 +++++++++++++++++++++----------------------
2 files changed, 296 insertions(+), 141 deletions(-)
diff --git a/README-UA.md b/README-UA.md
index da7738d82..055f037e9 100644
--- a/README-UA.md
+++ b/README-UA.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI розуміє вашу кодову базу, вносить зміни з вашого дозволу та виконує команди — безпосередньо з вашого терміналу.
+🚀 Antigravity CLI
-- **Офіційна документація**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Офіційний вебсайт**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ Community-Fork & Hardened Offline Version of google-antigravity/antigravity-cli
+
-
+
+
+
+
+
+
+
+
+ 🤖 ШІ-кодинг агент прямо у вашому терміналі. Розуміє контекст вашої кодової бази, створює та редагує файли, виконує безпечні команди в пісочниці та вирішує комплексні архітектурні завдання за один промпт.
+
---
-Antigravity CLI переносить основні можливості Antigravity 2.0 (багатокрокові міркування, редагування кількох файлів, виклик інструментів та збереження історії) безпосередньо у ваш термінал. Його оптимізовано для робочих процесів, керованих з клавіатури, та віддалених сесій SSH з мінімальними витратами системних ресурсів.
+## ⚡ Швидкий старт
----
+### Миттєве встановлення (Offline-first & Zero-dependency)
+Цей форк завантажує попередньо скомпільовані бінарні файли прямо з **GitHub Release Assets** (замість серверів Google API). Також підтримується повністю автономне офлайн-встановлення, якщо потрібні архіви було попередньо завантажено в папку `packages/binaries/`.
-## Огляд можливостей
+#### 🐧 Linux та 🍎 macOS
+```bash
+# Мережеве встановлення з репозиторію форку:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# АБО автономне офлайн-встановлення з локального репозиторію:
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (Опціонально: завантажте архіви платформ у packages/binaries/)
+make install
+```
-| Можливість | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Основний фокус** | Швидкість, ефективність клавіатури, низькі накладні витрати | Повнота, візуальна оркестрація, управління проєктами |
-| **Інтерфейс** | Інтерфейс користувача терміналу (TUI) | Повноцінний графічний додаток (GUI) |
-| **Робочі процеси** | SSH / віддалені сесії, пріоритет клавіатури | Локальні робочі простори, складна оркестрація |
-| **Двигун агента** | Спільний основний двигун агента | Спільний основний двигун агента |
+#### 🪟 Windows PowerShell
+```powershell
+# Мережеве встановлення:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# АБО офлайн-встановлення з клонованого репозиторію:
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# Мережеве встановлення:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# АБО офлайн-встановлення з клонованого репозиторію:
+install.cmd
+```
---
-## Інтеграція
+## 📋 Основні можливості
+
+> [!NOTE]
+> На відміну від оригінальної версії, цей форк адаптований для стабільної роботи в headless/SSH-сесіях та локальних home-лабораторіях.
-- **Спільний двигун агента**: Обидва інтерфейси працюють на одному спільному ядрі агента. Покращення автоматично застосовуються до обох.
-- **Спільні налаштування**: Вподобання та дозволи синхронізуються в обох напрямках.
-- **Експорт сесії**: Експортуйте термінальні сесії в графічний інтерфейс Antigravity 2.0 для продовження роботи.
+* 📂 **Мультифайлове редагування** — Редагує декілька файлів одночасно у вашому робочому просторі з попереднім підтвердженням змін.
+* 🔒 **Безпечні Shell-команди** — Виконує будь-які термінальні команди у вбудованому Docker-контейнері (пісочниці) або на хост-системі.
+* 🧠 **Багатокрокові міркування (PAV)** — Самостійно будує план виконання завдання, тестує код і виправляє власні помилки.
+* 💾 **Постійна історія розмов** — Зберігає повний контекст розмови та стан робочого простору між сесіями.
+* 🔌 **Система плагінів** — Розширюйте можливості агента за допомогою кастомних *Skills* та MCP-серверів (Model Context Protocol).
---
-## Встановлення
+## ⚙️ Конфігурація
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. Конфігурація проєкту (`.antigravity.md`)
+Створіть файл `.antigravity.md` у корені вашого проєкту, щоб передати ШІ-агенту специфічний контекст та правила розробки:
+
+```markdown
+# Контекст проєкту
+
+- Цей проєкт використовує FastAPI та Pydantic v2.
+- Завжди використовуйте `model_dump()` замість застарілого `dict()`.
+- СУВОРЕ ПРАВИЛО: Жодних хардкод-паролів у коді. Всі секрети імпортувати з `.env`.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. Глобальні налаштування (`~/.gemini/settings.json`)
+Конфігураційний файл керує поведінкою інтерфейсу та MCP-серверами:
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. Спеціалізовані агенти (`~/.antigravity/agents/`)
+Ви можете описувати кастомні ролі та інструкції для ШІ-агентів у форматі YAML:
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Аналізує код на вразливості перед комітом"
+instructions: |
+ Перевіряй зміни на:
+ - OWASP Top 10 вразливості
+ - Витік API ключів чи секретів
+ - Правильність налаштування firewall/nftables
```
---
-## Автентифікація
+## 🔐 Способи авторизації
+
+| Метод | Команда / Змінна | Обмеження та особливості |
+| :--- | :--- | :--- |
+| **Google Auth (Browser)** | Автоматично при першому `agy` | Стандартний вхід. Безкоштовний ліміт: 60 з/хв, 1000 з/добу |
+| **API Key (Offline)** | `export GEMINI_API_KEY="X"` | Рекомендовано для серверів та автоматизації |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Enterprise-рівень з хмарною інфраструктурою Google Cloud |
+| **Вихід з профілю** | `/logout` | Очищення локальних токенів сесії |
-CLI виконує автентифікацію через системну зв'язку ключів, повертаючись до входу Google Sign-In, якщо немає активної сесії.
+---
-- **Локально**: Автоматично відкриває ваш браузер за замовчуванням.
-- **Віддалено / SSH**: Виявляє сесії SSH та виводить URL-адресу авторизації для входу локально.
-- **Вихід**: Виконайте `/logout` для видалення збережених облікових даних.
+## 🔧 Довідка команд
-> [!NOTE]
-> Для корпоративного доступу підключіть свій проєкт GCP під час онбордингу. Детальніше на сторінці Enterprise.
+### Командний рядок
+```bash
+agy # Запустити інтерактивну сесію
+agy -p "Запит" # Одноразове виконання без входу в чат
+agy -c # Продовжити останню незавершену розмову
+agy --conversation # Завантажити сесію за конкретним ідентифікатором
+agy --sandbox # Запустити в ізольованому Docker-контейнері
+agy update # Оновити бінарний файл до останньої версії
+agy plugin list # Список встановлених плагінів
+```
+
+### Slash-команди в інтерфейсі чату
+* `/help` — Довідка з доступних інструментів.
+* `/settings` — Інтерактивне налаштування параметрів.
+* `/usage` — Статистика витрачених токенів та квоти.
+* `/diff` — Перегляд поточних незбережених змін у проєкті.
+* `/statusline` — Налаштування відображення статус-бару терміналу.
---
-## Умови використання та використання даних
+## 🔄 Злиття та міграція з Gemini CLI
> [!WARNING]
-> Відомо, що ШІ-агенти для кодування мають певні ризики безпеки, зокрема автономне виконання коду, витік даних, prompt-ін'єкції та ризики в ланцюжку постачання. Переконайтеся, що ви контролюєте та перевіряєте всі дії, які виконує агент.
+> Оригінальний Gemini CLI (`gemini`) припиняє підтримку для non-enterprise акаунтів **18 червня 2026**. Перехід на Antigravity CLI є обов'язковим.
+
+### Кроки для швидкого переходу
+1. Встановіть новий клієнт: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Перейменуйте локальні файли конфігурації:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Оновіть CI/CD конфігурації в GitHub Actions, замінивши виклики `gemini` на `agy`.
+4. Видаліть стару бібліотеку: `npm uninstall -g @google/gemini-cli`
+
+### Порівняльна таблиця
+
+| Характеристика | Gemini CLI (Застарілий) | Antigravity CLI (Сучасний) |
+| :--- | :--- | :--- |
+| **Платформа розробки** | Node.js / TypeScript | Go (Native Compiled Binary) |
+| **Назва команди** | `gemini` | `agy` |
+| **Швидкість старту** | ~1.2 сек (запуск Node.js) | **~0.05 сек (миттєвий нативний старт)** |
+| **Файл конфігурації** | `GEMINI.md` | `.antigravity.md` |
+| **Авто-оновлення** | Через `npm update` | Вбудований механізм self-update |
+| **Статус підтримки** | ⛔ EOL (18.06.2026) | ✅ Активна розробка (Upstream) |
+
+---
+
+## 📁 Структура репозиторію
+
+```
+antigravity-cli/
+├── install.sh # Інсталятор для Linux/macOS (офлайн/онлайн)
+├── install.ps1 # Інсталятор для Windows PowerShell (офлайн/онлайн)
+├── install.cmd # Інсталятор для Windows CMD
+├── Makefile # Автоматизовані цілі (make install/reinstall/uninstall)
+├── .antigravity.md # Шаблон файлу контексту проєкту
+├── packages/ # Локальний офлайн-дистрибутив
+│ ├── manifests/ # Маніфести версій для всіх платформ
+│ └── binaries/ # (Створюється вручну для офлайн-режиму)
+└── CHANGELOG.md # Журнал версій та релізів
+```
+
+---
-Використовуючи Antigravity CLI, ви погоджуєтеся допомагати покращувати продукт, дозволяючи Google збирати та використовувати ваші дані про взаємодію відповідно до Умов використання Google та Політики конфіденційності Google. Ви можете будь-коли відмовитися через свої налаштування.
+## 🤝 Спільнота та розробка (Contributing)
-### Юридичні посилання та конфіденційність
+Цей репозиторій є незалежним ком'юніті-форком оригінального проєкту [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+**Наші покращення:**
+* 🇺🇦 Повна українська локалізація документації та гайдів.
+* 📦 Автономність: можливість офлайн-встановлення без завантажень з Google API.
+* 🛠️ Зручність: додано `Makefile` для спрощеного життєвого циклу інструменту.
+* 🛡️ Безпека: регулярні баг-фікси та покращення роботи в пісочниці (сандбоксі).
+
+---
-- **Умови використання**: [antigravity.google/terms](https://antigravity.google/terms)
-- **Політика конфіденційності**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Юридичний статус та дисклеймер (Legal & Trademark Notice)
+
+* **Офіційні посилання**: [Офіційний репозиторій документації](https://github.com/google-antigravity/antigravity-cli) · [Офіційна кодова база CLI](https://github.com/google-gemini/gemini-cli) · [Офіційний сайт](https://antigravity.google)
+* **Правила використання**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Правовий статус форку:**
+> Цей репозиторій є незалежною некомерційною копією (Community Fork) оригінального клієнта. Він **не є** офіційним продуктом компанії Google LLC. Google LLC не несе відповідальності за працездатність, модифікації або безпеку цього форку.
+>
+> **Ліцензування та авторські права:**
+> Оригінальне програмне забезпечення розповсюджується під ліцензією [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Весь оригінальний код є інтелектуальною власністю **Copyright © 2025 Google LLC**.
+>
+> **Використання торгових марок:**
+> Назва "Antigravity CLI" та пов'язані логотипи використовуються в межах дозволеного використання (Customary Use) виключно для опису походження, сумісності та функціонального призначення програмного забезпечення. Цей проєкт не претендує на володіння будь-якими торговими марками Google LLC.
+>
+> **Обмеження відповідальності (Disclaimer of Warranty):**
+> Програмне забезпечення надається на умовах «ЯК Є» (AS IS), БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ, явних чи неявних. Ви берете на себе всю відповідальність та ризики, пов'язані з його використанням.
+
+> [!CAUTION]
+> ШІ-агенти для кодування працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
diff --git a/README.md b/README.md
index c2c95bf5c..fc239558f 100644
--- a/README.md
+++ b/README.md
@@ -20,76 +20,76 @@
- 🤖 ШІ-кодинг агент прямо у вашому терміналі. Розуміє контекст вашої кодової бази, створює та редагує файли, виконує безпечні команди в пісочниці та вирішує комплексні архітектурні завдання за один промпт.
+ 🤖 AI coding agent directly in your terminal. Understands the context of your codebase, creates and edits files, executes secure commands in a sandbox, and solves complex architectural tasks in a single prompt.
---
-## ⚡ Швидкий старт
+## ⚡ Quick Start
-### Миттєве встановлення (Offline-first & Zero-dependency)
-Цей форк завантажує попередньо скомпільовані бінарні файли прямо з **GitHub Release Assets** (замість серверів Google API). Також підтримується повністю автономне офлайн-встановлення, якщо потрібні архіви було попередньо завантажено в папку `packages/binaries/`.
+### Instant Installation (Offline-first & Zero-dependency)
+This fork downloads precompiled binaries directly from **GitHub Release Assets** (instead of Google API servers). Completely offline installation is also supported if the required archives were preloaded into the `packages/binaries/` folder.
-#### 🐧 Linux та 🍎 macOS
+#### 🐧 Linux and 🍎 macOS
```bash
-# Мережеве встановлення з репозиторію форку:
+# Network installation from the fork repository:
curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
-# АБО автономне офлайн-встановлення з локального репозиторію:
+# OR offline installation from a local repository:
git clone https://github.com/weby-homelab/antigravity-cli.git
cd antigravity-cli
-# (Опціонально: завантажте архіви платформ у packages/binaries/)
+# (Optional: download platform archives to packages/binaries/)
make install
```
#### 🪟 Windows PowerShell
```powershell
-# Мережеве встановлення:
+# Network installation:
irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
-# АБО офлайн-встановлення з клонованого репозиторію:
+# OR offline installation from a cloned repository:
.\install.ps1
```
#### 🪟 Windows CMD
```cmd
-# Мережеве встановлення:
+# Network installation:
curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
-# АБО офлайн-встановлення з клонованого репозиторію:
+# OR offline installation from a cloned repository:
install.cmd
```
---
-## 📋 Основні можливості
+## 📋 Key Features
> [!NOTE]
-> На відміну від оригінальної версії, цей форк адаптований для стабільної роботи в headless/SSH-сесіях та локальних home-лабораторіях.
+> Unlike the original version, this fork is adapted for stable operation in headless/SSH sessions and local home labs.
-* 📂 **Мультифайлове редагування** — Редагує декілька файлів одночасно у вашому робочому просторі з попереднім підтвердженням змін.
-* 🔒 **Безпечні Shell-команди** — Виконує будь-які термінальні команди у вбудованому Docker-контейнері (пісочниці) або на хост-системі.
-* 🧠 **Багатокрокові міркування (PAV)** — Самостійно будує план виконання завдання, тестує код і виправляє власні помилки.
-* 💾 **Постійна історія розмов** — Зберігає повний контекст розмови та стан робочого простору між сесіями.
-* 🔌 **Система плагінів** — Розширюйте можливості агента за допомогою кастомних *Skills* та MCP-серверів (Model Context Protocol).
+* 📂 **Multi-file Editing** — Edits multiple files simultaneously in your workspace with prior confirmation of changes.
+* 🔒 **Secure Shell Commands** — Executes any terminal commands in the built-in Docker container (sandbox) or on the host system.
+* 🧠 **Multi-step Reasoning (PAV)** — Independently builds a task execution plan, tests code, and debugs its own errors.
+* 💾 **Persistent Conversation History** — Saves the complete conversation context and workspace state between sessions.
+* 🔌 **Plugin System** — Extend the agent's capabilities with custom *Skills* and MCP (Model Context Protocol) servers.
---
-## ⚙️ Конфігурація
+## ⚙️ Configuration
-### 1. Конфігурація проєкту (`.antigravity.md`)
-Створіть файл `.antigravity.md` у корені вашого проєкту, щоб передати ШІ-агенту специфічний контекст та правила розробки:
+### 1. Project Configuration (`.antigravity.md`)
+Create an `.antigravity.md` file in the root of your project to provide specific context and development rules to the AI agent:
```markdown
-# Контекст проєкту
+# Project Context
-- Цей проєкт використовує FastAPI та Pydantic v2.
-- Завжди використовуйте `model_dump()` замість застарілого `dict()`.
-- СУВОРЕ ПРАВИЛО: Жодних хардкод-паролів у коді. Всі секрети імпортувати з `.env`.
+- This project uses FastAPI and Pydantic v2.
+- Always use `model_dump()` instead of the deprecated `dict()`.
+- STRICT RULE: No hardcoded passwords in code. Import all secrets from `.env`.
```
-### 2. Глобальні налаштування (`~/.gemini/settings.json`)
-Конфігураційний файл керує поведінкою інтерфейсу та MCP-серверами:
+### 2. Global Settings (`~/.gemini/settings.json`)
+The configuration file controls the UI behavior and MCP servers:
```json
{
@@ -108,129 +108,129 @@ install.cmd
}
```
-### 3. Спеціалізовані агенти (`~/.antigravity/agents/`)
-Ви можете описувати кастомні ролі та інструкції для ШІ-агентів у форматі YAML:
+### 3. Specialized Agents (`~/.antigravity/agents/`)
+You can describe custom roles and instructions for AI agents in YAML format:
```yaml
# ~/.antigravity/agents/security-reviewer.yaml
name: security-reviewer
-description: "Аналізує код на вразливості перед комітом"
+description: "Analyzes code for vulnerabilities before commit"
instructions: |
- Перевіряй зміни на:
- - OWASP Top 10 вразливості
- - Витік API ключів чи секретів
- - Правильність налаштування firewall/nftables
+ Check changes for:
+ - OWASP Top 10 vulnerabilities
+ - Leakage of API keys or secrets
+ - Correctness of firewall/nftables configuration
```
---
-## 🔐 Способи авторизації
+## 🔐 Authentication Methods
-| Метод | Команда / Змінна | Обмеження та особливості |
+| Method | Command / Variable | Limitations & Features |
| :--- | :--- | :--- |
-| **Google Auth (Browser)** | Автоматично при першому `agy` | Стандартний вхід. Безкоштовний ліміт: 60 з/хв, 1000 з/добу |
-| **API Key (Offline)** | `export GEMINI_API_KEY="X"` | Рекомендовано для серверів та автоматизації |
-| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Enterprise-рівень з хмарною інфраструктурою Google Cloud |
-| **Вихід з профілю** | `/logout` | Очищення локальних токенів сесії |
+| **Google Auth (Browser)** | Automatically on first `agy` | Standard login. Free limit: 60 req/min, 1000 req/day |
+| **API Key (Offline)** | `export GEMINI_API_KEY="X"` | Recommended for servers and automation |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Enterprise level with Google Cloud cloud infrastructure |
+| **Sign Out** | `/logout` | Clearing local session tokens |
---
-## 🔧 Довідка команд
+## 🔧 Command Reference
-### Командний рядок
+### Command Line
```bash
-agy # Запустити інтерактивну сесію
-agy -p "Запит" # Одноразове виконання без входу в чат
-agy -c # Продовжити останню незавершену розмову
-agy --conversation # Завантажити сесію за конкретним ідентифікатором
-agy --sandbox # Запустити в ізольованому Docker-контейнері
-agy update # Оновити бінарний файл до останньої версії
-agy plugin list # Список встановлених плагінів
+agy # Start an interactive session
+agy -p "Prompt" # One-time execution without entering chat
+agy -c # Continue the last incomplete conversation
+agy --conversation # Load a session by specific ID
+agy --sandbox # Run in an isolated Docker container
+agy update # Update binary to the latest version
+agy plugin list # List installed plugins
```
-### Slash-команди в інтерфейсі чату
-* `/help` — Довідка з доступних інструментів.
-* `/settings` — Інтерактивне налаштування параметрів.
-* `/usage` — Статистика витрачених токенів та квоти.
-* `/diff` — Перегляд поточних незбережених змін у проєкті.
-* `/statusline` — Налаштування відображення статус-бару терміналу.
+### Slash Commands in Chat Interface
+* `/help` — Help on available tools.
+* `/settings` — Interactive settings configuration.
+* `/usage` — Statistics of spent tokens and quota.
+* `/diff` — View current unsaved changes in the project.
+* `/statusline` — Configure terminal status line display.
---
-## 🔄 Злиття та міграція з Gemini CLI
+## 🔄 Migration from Gemini CLI
> [!WARNING]
-> Оригінальний Gemini CLI (`gemini`) припиняє підтримку для non-enterprise акаунтів **18 червня 2026**. Перехід на Antigravity CLI є обов'язковим.
+> The original Gemini CLI (`gemini`) is deprecating support for non-enterprise accounts on **June 18, 2026**. Migration to Antigravity CLI is required.
-### Кроки для швидкого переходу
-1. Встановіть новий клієнт: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Перейменуйте локальні файли конфігурації:
+### Steps for Quick Transition
+1. Install the new client: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Rename local configuration files:
```bash
mv GEMINI.md .antigravity.md
mv ~/.gemini/agents/ ~/.antigravity/agents/
```
-3. Оновіть CI/CD конфігурації в GitHub Actions, замінивши виклики `gemini` на `agy`.
-4. Видаліть стару бібліотеку: `npm uninstall -g @google/gemini-cli`
+3. Update CI/CD configurations in GitHub Actions, replacing `gemini` calls with `agy`.
+4. Uninstall the old library: `npm uninstall -g @google/gemini-cli`
-### Порівняльна таблиця
+### Comparison Table
-| Характеристика | Gemini CLI (Застарілий) | Antigravity CLI (Сучасний) |
+| Feature | Gemini CLI (Legacy) | Antigravity CLI (Modern) |
| :--- | :--- | :--- |
-| **Платформа розробки** | Node.js / TypeScript | Go (Native Compiled Binary) |
-| **Назва команди** | `gemini` | `agy` |
-| **Швидкість старту** | ~1.2 сек (запуск Node.js) | **~0.05 сек (миттєвий нативний старт)** |
-| **Файл конфігурації** | `GEMINI.md` | `.antigravity.md` |
-| **Авто-оновлення** | Через `npm update` | Вбудований механізм self-update |
-| **Статус підтримки** | ⛔ EOL (18.06.2026) | ✅ Активна розробка (Upstream) |
+| **Development Platform** | Node.js / TypeScript | Go (Native Compiled Binary) |
+| **Command Name** | `gemini` | `agy` |
+| **Startup Speed** | ~1.2s (Node.js startup) | **~0.05s (instant native startup)** |
+| **Configuration File** | `GEMINI.md` | `.antigravity.md` |
+| **Auto-update** | Via `npm update` | Built-in self-update mechanism |
+| **Support Status** | ⛔ EOL (June 18, 2026) | ✅ Active Development (Upstream) |
---
-## 📁 Структура репозиторію
+## 📁 Repository Structure
```
antigravity-cli/
-├── install.sh # Інсталятор для Linux/macOS (офлайн/онлайн)
-├── install.ps1 # Інсталятор для Windows PowerShell (офлайн/онлайн)
-├── install.cmd # Інсталятор для Windows CMD
-├── Makefile # Автоматизовані цілі (make install/reinstall/uninstall)
-├── .antigravity.md # Шаблон файлу контексту проєкту
-├── packages/ # Локальний офлайн-дистрибутив
-│ ├── manifests/ # Маніфести версій для всіх платформ
-│ └── binaries/ # (Створюється вручну для офлайн-режиму)
-└── CHANGELOG.md # Журнал версій та релізів
+├── install.sh # Installer for Linux/macOS (offline/online)
+├── install.ps1 # Installer for Windows PowerShell (offline/online)
+├── install.cmd # Installer for Windows CMD
+├── Makefile # Automation targets (make install/reinstall/uninstall)
+├── .antigravity.md # Project context file template
+├── packages/ # Local offline distribution
+│ ├── manifests/ # Version manifests for all platforms
+│ └── binaries/ # (Created manually for offline mode)
+└── CHANGELOG.md # Changelog and release log
```
---
-## 🤝 Спільнота та розробка (Contributing)
+## 🤝 Contributing & Community
-Цей репозиторій є незалежним ком'юніті-форком оригінального проєкту [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+This repository is an independent community fork of the original [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli) project.
-**Наші покращення:**
-* 🇺🇦 Повна українська локалізація документації та гайдів.
-* 📦 Автономність: можливість офлайн-встановлення без завантажень з Google API.
-* 🛠️ Зручність: додано `Makefile` для спрощеного життєвого циклу інструменту.
-* 🛡️ Безпека: регулярні баг-фікси та покращення роботи в пісочниці (сандбоксі).
+**Our Enhancements:**
+* 🌍 Multi-language localization support for docs and guides.
+* 📦 Autonomy: offline installation capability without Google API downloads.
+* 🛠️ Convenience: added `Makefile` for a simplified tool lifecycle.
+* 🛡️ Security: regular bug fixes and improvements to the sandbox environment.
---
-## 📜 Юридичний статус та дисклеймер (Legal & Trademark Notice)
+## 📜 Legal & Trademark Notice
-* **Офіційні посилання**: [Офіційний репозиторій документації](https://github.com/google-antigravity/antigravity-cli) · [Офіційна кодова база CLI](https://github.com/google-gemini/gemini-cli) · [Офіційний сайт](https://antigravity.google)
-* **Правила використання**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+* **Official Links**: [Official Documentation Repo](https://github.com/google-antigravity/antigravity-cli) · [Official CLI Codebase](https://github.com/google-gemini/gemini-cli) · [Official Website](https://antigravity.google)
+* **Terms of Use**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
> [!IMPORTANT]
-> **Правовий статус форку:**
-> Цей репозиторій є незалежною некомерційною копією (Community Fork) оригінального клієнта. Він **не є** офіційним продуктом компанії Google LLC. Google LLC не несе відповідальності за працездатність, модифікації або безпеку цього форку.
+> **Fork Legal Status:**
+> This repository is an independent non-commercial copy (Community Fork) of the original client. It **is not** an official product of Google LLC. Google LLC is not responsible for the performance, modifications, or safety of this fork.
>
-> **Ліцензування та авторські права:**
-> Оригінальне програмне забезпечення розповсюджується під ліцензією [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). Весь оригінальний код є інтелектуальною власністю **Copyright © 2025 Google LLC**.
+> **Licensing & Copyrights:**
+> The original software is distributed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). All original code is the intellectual property of **Copyright © 2025 Google LLC**.
>
-> **Використання торгових марок:**
-> Назва "Antigravity CLI" та пов'язані логотипи використовуються в межах дозволеного використання (Customary Use) виключно для опису походження, сумісності та функціонального призначення програмного забезпечення. Цей проєкт не претендує на володіння будь-якими торговими марками Google LLC.
+> **Trademark Use:**
+> The name "Antigravity CLI" and associated logos are used within Customary Use limits solely to describe the origin, compatibility, and functional purpose of the software. This project does not claim ownership of any Google LLC trademarks.
>
-> **Обмеження відповідальності (Disclaimer of Warranty):**
-> Програмне забезпечення надається на умовах «ЯК Є» (AS IS), БЕЗ БУДЬ-ЯКИХ ГАРАНТІЙ, явних чи неявних. Ви берете на себе всю відповідальність та ризики, пов'язані з його використанням.
+> **Disclaimer of Warranty:**
+> The software is provided on an "AS IS" basis, WITHOUT WARRANTIES OF ANY KIND, either express or implied. You assume all responsibility and risks associated with its use.
> [!CAUTION]
-> ШІ-агенти для кодування працюють автономно. Завжди уважно перевіряйте пропоновані diff-блоки та команди перед підтвердженням виконання, особливо при роботі з системними файлами чи конфігурацією фаєрволу.
+> AI coding agents work autonomously. Always carefully review the proposed diff blocks and commands before confirming execution, especially when working with system files or firewall configuration.
From 49f20eb98e4eb91888682b0693580d5590802051 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 11:00:02 +0300
Subject: [PATCH 15/22] docs: expand tagline and translate complete README into
all supported languages
---
README-DE.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README-ES.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README-FR.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README-PT.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README-UA.md | 2 +-
README-ZH.md | 237 ++++++++++++++++++++++++++++++++++++++++++---------
README.md | 2 +-
7 files changed, 982 insertions(+), 207 deletions(-)
diff --git a/README-DE.md b/README-DE.md
index 261c82694..ee26f3456 100644
--- a/README-DE.md
+++ b/README-DE.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI versteht Ihre Codebasis, nimmt Änderungen mit Ihrer Erlaubnis vor und führt Befehle aus – direkt in Ihrem Terminal.
+🚀 Antigravity CLI
-- **Offizielle Dokumentation**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Offizielle Website**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ Community-Fork & gehärtete Offline-Version von google-antigravity/antigravity-cli mit automatischer Konfiguration von Statuszeile und Fenstertitel
+
-
+
+
+
+
+
+
+
+
+ 🤖 KI-Codierungsagent direkt in Ihrem Terminal. Versteht den Kontext Ihrer Codebasis, erstellt und bearbeitet Dateien, führt sichere Befehle in einer Sandbox aus und löst komplexe architektonische Aufgaben mit einem einzigen Prompt.
+
---
-Antigravity CLI bringt die Kernfunktionen von Antigravity 2.0 (mehrstufiges Denken, Bearbeiten mehrerer Dateien, Tool-Aufrufe und persistenter Verlauf) direkt in Ihr Terminal. Es ist für tastaturgesteuerte Arbeitsabläufe und Remote-SSH-Sitzungen mit minimalem Ressourcen-Overhead optimiert.
+## ⚡ Schnellstart
----
+### Sofortige Installation (Offline-first & Zero-dependency)
+Dieser Fork lädt vorkompilierte Binärdateien direkt aus den **GitHub Release Assets** herunter (anstatt von Google-API-Servern). Eine vollständig autonome Offline-Installation wird ebenfalls unterstützt, wenn die erforderlichen Archive zuvor in den Ordner `packages/binaries/` heruntergeladen wurden.
-## Funktionen im Überblick
+#### 🐧 Linux und 🍎 macOS
+```bash
+# Netzwerkinstallation aus dem Fork-Repository:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# ODER Offline-Installation aus einem lokalen Repository:
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (Optional: Laden Sie Plattform-Archive nach packages/binaries/ herunter)
+make install
+```
-| Funktion | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Hauptfokus** | Geschwindigkeit, Tastatureffizienz, geringer Overhead | Vollständigkeit, visuelle Orchestrierung, Projektmanagement |
-| **Schnittstelle** | Terminal-Benutzeroberfläche (TUI) | Vollständige, umfangreiche GUI-Anwendung |
-| **Arbeitsabläufe** | SSH/Remote-Sitzungen, Tastatur zuerst | Lokale Arbeitsbereiche, komplexe Orchestrierung |
-| **Agenten-Engine** | Gemeinsame Core-Agenten-Engine | Gemeinsame Core-Agenten-Engine |
+#### 🪟 Windows PowerShell
+```powershell
+# Netzwerkinstallation:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# ODER Offline-Installation aus einem geklonten Repository:
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# Netzwerkinstallation:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# ODER Offline-Installation aus einem geklonten Repository:
+install.cmd
+```
---
-## Integration
+## 📋 Hauptfunktionen
+
+> [!NOTE]
+> Im Gegensatz zur Originalversion ist dieser Fork für den stabilen Betrieb in Headless-/SSH-Sitzungen und lokalen Home-Labs angepasst.
-- **Gemeinsame Agenten-Engine**: Beide Schnittstellen laufen auf derselben Core-Agenten-Engine. Verbesserungen werden automatisch auf beide angewendet.
-- **Gemeinsame Einstellungen**: Einstellungen und Berechtigungen werden bidirektional synchronisiert.
-- **Sitzungsexport**: Exportieren Sie Terminalsitzungen in die Antigravity 2.0 GUI, um die Arbeit fortzusetzen.
+* 📂 **Bearbeitung mehrerer Dateien** — Bearbeitet mehrere Dateien gleichzeitig in Ihrem Arbeitsbereich mit vorheriger Bestätigung der Änderungen.
+* 🔒 **Sichere Shell-Befehle** — Führt beliebige Terminalbefehle im integrierten Docker-Container (Sandbox) oder auf dem Hostsystem aus.
+* 🧠 **Mehrstufiges Denken (PAV)** — Erstellt selbstständig einen Plan zur Aufgabenausführung, testet Code und behebt eigene Fehler.
+* 💾 **Persistenter Konversationsverlauf** — Speichert den vollständigen Konversationskontext und den Zustand des Arbeitsbereichs zwischen den Sitzungen.
+* 🔌 **Plugin-System** — Erweitern Sie die Fähigkeiten des Agenten mit benutzerdefinierten *Skills* und MCP-Servern (Model Context Protocol).
---
-## Installation
+## ⚙️ Konfiguration
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. Projektkonfiguration (`.antigravity.md`)
+Erstellen Sie eine `.antigravity.md`-Datei im Stammverzeichnis Ihres Projekts, um dem KI-Agenten spezifischen Kontext und Entwicklungsregeln bereitzustellen:
+
+```markdown
+# Projektkontext
+
+- Dieses Projekt verwendet FastAPI und Pydantic v2.
+- Verwenden Sie immer `model_dump()` anstelle des veralteten `dict()`.
+- STRIKTE REGEL: Keine fest codierten Passwörter im Code. Importieren Sie alle Geheimnisse aus `.env`.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. Globale Einstellungen (`~/.gemini/settings.json`)
+Die Konfigurationsdatei steuert das UI-Verhalten und die MCP-Server:
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. Spezialisierte Agenten (`~/.antigravity/agents/`)
+Sie können benutzerdefinierte Rollen und Anweisungen für KI-Agenten im YAML-Format beschreiben:
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Analysiert Code vor dem Commit auf Schwachstellen"
+instructions: |
+ Änderungen überprüfen auf:
+ - OWASP Top 10 Schwachstellen
+ - Durchsickern von API-Schlüsseln oder Geheimnissen
+ - Richtigkeit der Firewall-/nftables-Konfiguration
```
---
-## Authentifizierung
+## 🔐 Authentifizierungsmethoden
+
+| Methode | Befehl / Variable | Einschränkungen & Funktionen |
+| :--- | :--- | :--- |
+| **Google Auth (Browser)** | Automatisch bei der ersten Ausführung von `agy` | Standard-Login. Kostenloses Limit: 60 Anfr./Min., 1000 Anfr./Tag |
+| **API-Schlüssel (Offline)** | `export GEMINI_API_KEY="X"` | Empfohlen für Server und Automatisierung |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Enterprise-Level mit Google Cloud Cloud-Infrastruktur |
+| **Abmelden** | `/logout` | Löschen lokaler Sitzungstoken |
-Die CLI authentifiziert sich über den System-Schlüsselbund und greift auf die Google-Anmeldung zurück, wenn keine aktive Sitzung vorhanden ist.
+---
-- **Lokal**: Öffnet automatisch Ihren Standardbrowser.
-- **Remote / SSH**: Erkennt SSH-Sitzungen und gibt eine Autorisierungs-URL aus, um die Anmeldung lokal abzuschließen.
-- **Abmelden**: Führen Sie `/logout` aus, um gespeicherte Anmeldeinformationen zu löschen.
+## 🔧 Befehlsreferenz
-> [!NOTE]
-> Verbinden Sie für den Unternehmenszugriff Ihr GCP-Projekt während des Onboardings. Weitere Informationen finden Sie auf der Enterprise-Seite.
+### Befehlszeile
+```bash
+agy # Eine interaktive Sitzung starten
+agy -p "Prompt" # Einmalige Ausführung ohne Chat-Eingabe
+agy -c # Letzte unvollständige Konversation fortsetzen
+agy --conversation # Sitzung mit einer bestimmten ID laden
+agy --sandbox # In einem isolierten Docker-Container ausführen
+agy update # Binärdatei auf die neueste Version aktualisieren
+agy plugin list # Installierte Plugins auflisten
+```
+
+### Slash-Befehle in der Chat-Schnittstelle
+* `/help` — Hilfe zu verfügbaren Tools.
+* `/settings` — Interaktive Konfiguration der Einstellungen.
+* `/usage` — Statistik der verbrauchten Token und des Kontingents.
+* `/diff` — Aktuelle ungespeicherte Änderungen im Projekt anzeigen.
+* `/statusline` — Anzeige der Terminal-Statuszeile konfigurieren.
---
-## Nutzungsbedingungen und Datennutzung
+## 🔄 Migration von Gemini CLI
> [!WARNING]
-> Es ist bekannt, dass KI-Codierungsagenten bestimmte Sicherheitsrisiken aufweisen, darunter die autonome Codeausführung, Datenabfluss, Prompt-Injektionen und Risiken in der Lieferkette. Stellen Sie sicher, dass Sie alle Aktionen des Agenten überwachen und überprüfen.
+> Das ursprüngliche Gemini CLI (`gemini`) stellt die Unterstützung für Nicht-Unternehmenskonten am **18. Juni 2026** ein. Die Migration zu Antigravity CLI ist erforderlich.
+
+### Schritte für einen schnellen Übergang
+1. Installieren Sie den neuen Client: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Benennen Sie lokale Konfigurationsdateien um:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Aktualisieren Sie CI/CD-Konfigurationen in GitHub Actions und ersetzen Sie `gemini`-Aufrufe durch `agy`.
+4. Deinstallieren Sie die alte Bibliothek: `npm uninstall -g @google/gemini-cli`
+
+### Vergleichstabelle
+
+| Funktion | Gemini CLI (Veraltet) | Antigravity CLI (Modern) |
+| :--- | :--- | :--- |
+| **Entwicklungsplattform** | Node.js / TypeScript | Go (Nativ kompilierte Binärdatei) |
+| **Befehlsname** | `gemini` | `agy` |
+| **Startgeschwindigkeit** | ~1.2s (Node.js-Start) | **~0.05s (sofortiger nativer Start)** |
+| **Konfigurationsdatei** | `GEMINI.md` | `.antigravity.md` |
+| **Automatische Aktualisierung** | Über `npm update` | Integrierter Selbstaktualisierungsmechanismus |
+| **Support-Status** | ⛔ EOL (18. Juni 2026) | ✅ Aktive Entwicklung (Upstream) |
+
+---
+
+## 📁 Repository-Struktur
+
+```
+antigravity-cli/
+├── install.sh # Installer für Linux/macOS (offline/online)
+├── install.ps1 # Installer für Windows PowerShell (offline/online)
+├── install.cmd # Installer für Windows CMD
+├── Makefile # Automatisierungsziele (make install/reinstall/uninstall)
+├── .antigravity.md # Projektkontext-Dateivorlage
+├── packages/ # Lokaler Offline-Vertrieb
+│ ├── manifests/ # Versionsmanifeste für alle Plattformen
+│ └── binaries/ # (Manuell erstellt für den Offline-Modus)
+└── CHANGELOG.md # Changelog und Release-Protokoll
+```
+
+---
-Durch die Nutzung von Antigravity CLI erklären Sie sich damit einverstanden, zur Verbesserung des Produkts beizutragen, indem Sie Google gestatten, Ihre Interaktionsdaten zu erfassen und zu verwenden, vorbehaltlich der Google-Nutzungsbedingungen und der Google-Datenschutzerklärung. Sie können sich jederzeit über Ihre Einstellungen abmelden.
+## 🤝 Mitwirken & Community
-### Rechtliche Links und Datenschutz
+Dieses Repository ist ein unabhängiger Community-Fork des ursprünglichen Projekts [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+**Unsere Verbesserungen:**
+* 🌍 Mehrsprachige Lokalisierungsunterstützung für Dokumente und Anleitungen.
+* 📦 Autonomie: Offline-Installationsmöglichkeit ohne Google-API-Downloads.
+* 🛠️ Komfort: `Makefile` für einen vereinfachten Lebenszyklus des Tools hinzugefügt.
+* 🛡️ Sicherheit: Regelmäßige Fehlerbehebungen und Verbesserungen an der Sandbox-Umgebung.
+
+---
-- **Nutzungsbedingungen**: [antigravity.google/terms](https://antigravity.google/terms)
-- **Datenschutzerklärung**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Rechtlicher Hinweis & Markenrecht
+
+* **Offizielle Links**: [Offizielles Dokumentations-Repo](https://github.com/google-antigravity/antigravity-cli) · [Offizielle CLI-Codebasis](https://github.com/google-gemini/gemini-cli) · [Offizielle Website](https://antigravity.google)
+* **Nutzungsbedingungen**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Rechtlicher Status des Forks:**
+> Dieses Repository ist eine unabhängige, nicht-kommerzielle Kopie (Community Fork) des Original-Clients. Es **ist kein** offizielles Produkt von Google LLC. Google LLC is nicht verantwortlich für die Leistung, Änderungen oder Sicherheit dieses Forks.
+>
+> **Lizenzierung & Urheberrechte:**
+> Die Original-Software wird unter der [Apache-Lizenz 2.0](https://www.apache.org/licenses/LICENSE-2.0) verbreitet. Der gesamte Originalcode ist das geistige Eigentum von **Copyright © 2025 Google LLC**.
+>
+> **Markennutzung:**
+> Der Name "Antigravity CLI" und die zugehörigen Logos werden im Rahmen der üblichen Nutzung ausschließlich zur Beschreibung der Herkunft, Kompatibilität und des funktionalen Zwecks der Software verwendet. Dieses Projekt erhebt keinen Anspruch auf Eigentumsrechte an Marken von Google LLC.
+>
+> **Gewährleistungsausschluss:**
+> Die Software wird "WIE BESEHEN" bereitgestellt, OHNE GEWÄHRLEISTUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend. Sie übernehmen die gesamte Verantwortung und alle Risiken im Zusammenhang mit ihrer Verwendung.
+
+> [!CAUTION]
+> KI-Codierungsagenten arbeiten autonom. Überprüfen Sie die vorgeschlagenen Diff-Blöcke und Befehle immer sorgfältig, bevor Sie die Ausführung bestätigen, insbesondere wenn Sie mit Systemdateien oder der Firewall-Konfiguration arbeiten.
diff --git a/README-ES.md b/README-ES.md
index d076c33e8..3995803ad 100644
--- a/README-ES.md
+++ b/README-ES.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI comprende su código base, realiza ediciones con su permiso y ejecuta comandos, directamente desde su terminal.
+🚀 Antigravity CLI
-- **Documentación oficial**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Sitio web oficial**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ Bifurcación de la comunidad y versión fuera de línea de google-antigravity/antigravity-cli con configuración automática de statusline y título de ventana
+
-
+
+
+
+
+
+
+
+
+ 🤖 Agente de codificación de IA directamente en su terminal. Comprende el contexto de su código base, crea y edita archivos, ejecuta comandos seguros en un entorno aislado y resuelve tareas arquitectónicas complejas en una sola instrucción.
+
---
-Antigravity CLI lleva las capacidades principales de Antigravity 2.0 (razonamiento de múltiples pasos, edición de múltiples archivos, llamadas a herramientas e historial persistente) directamente a su terminal. Está optimizado para flujos de trabajo basados en teclado y sesiones SSH remotas con una sobrecarga mínima de recursos.
+## ⚡ Inicio rápido
----
+### Instalación instantánea (Primero fuera de línea y sin dependencias)
+Esta bifurcación descarga archivos binarios precompilados directamente desde los **activos de lanzamiento de GitHub (GitHub Release Assets)** (en lugar de los servidores de la API de Google). También se admite la instalación completamente fuera de línea (offline) si los archivos requeridos se cargaron previamente en la carpeta `packages/binaries/`.
-## Características principales
+#### 🐧 Linux y 🍎 macOS
+```bash
+# Instalación a través de la red desde el repositorio de la bifurcación:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# O instalación fuera de línea desde un repositorio local:
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (Opcional: descargue los archivos de la plataforma en packages/binaries/)
+make install
+```
-| Característica | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Enfoque principal** | Velocidad, eficiencia de teclado, baja sobrecarga | Integridad, orquestación visual, gestión de proyectos |
-| **Interfaz** | Interfaz de usuario de terminal (TUI) | Aplicación GUI completa y enriquecida |
-| **Flujos de trabajo** | Sesiones SSH/remotas, primero el teclado | Espacios de trabajo locales, orquestación pesada |
-| **Motor de agente** | Motor de agente central compartido | Motor de agente central compartido |
+#### 🪟 Windows PowerShell
+```powershell
+# Instalación a través de la red:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# O instalación fuera de línea desde un repositorio clonado:
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# Instalación a través de la red:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# O instalación fuera de línea desde un repositorio clonado:
+install.cmd
+```
---
-## Integración
+## 📋 Características principales
+
+> [!NOTE]
+> A diferencia de la versión original, esta bifurcación está adaptada para un funcionamiento estable en sesiones sin interfaz gráfica (headless)/SSH y laboratorios domésticos locales.
-- **Motor de agente compartido**: Ambas interfaces se ejecutan en el mismo motor de agente central. Las mejoras se aplican automáticamente a ambas.
-- **Configuraciones compartidas**: Las preferencias y los permisos se sincronizan bidireccionalmente.
-- **Exportación de sesiones**: Exporte sesiones de terminal a la interfaz gráfica de usuario de Antigravity 2.0 para seguir trabajando.
+* 📂 **Edición de archivos múltiples** — Edita varios archivos simultáneamente en su espacio de trabajo con confirmación previa de los cambios.
+* 🔒 **Comandos de shell seguros** — Ejecuta cualquier comando de terminal en el contenedor Docker incorporado (entorno aislado/sandbox) o en el sistema host.
+* 🧠 **Razonamiento de múltiples pasos (PAV)** — Construye de forma independiente un plan de ejecución de tareas, prueba el código y depura sus propios errores.
+* 💾 **Historial de conversación persistente** — Guarda el contexto completo de la conversación y el estado del espacio de trabajo entre sesiones.
+* 🔌 **Sistema de complementos** — Amplíe las capacidades del agente con *habilidades (Skills)* personalizadas y servidores MCP (Model Context Protocol).
---
-## Instalación
+## ⚙️ Configuración
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. Configuración del proyecto (`.antigravity.md`)
+Cree un archivo `.antigravity.md` en la raíz de su proyecto para proporcionar un contexto específico y reglas de desarrollo al agente de IA:
+
+```markdown
+# Contexto del proyecto
+
+- Este proyecto utiliza FastAPI y Pydantic v2.
+- Utilice siempre `model_dump()` en lugar del obsoleto `dict()`.
+- REGLA ESTRICTA: No use contraseñas hardcoded en el código. Importe todos los secretos desde `.env`.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. Configuración global (`~/.gemini/settings.json`)
+El archivo de configuración controla el comportamiento de la interfaz de usuario y los servidores MCP:
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. Agentes especializados (`~/.antigravity/agents/`)
+Puede describir roles e instrucciones personalizados para agentes de IA en formato YAML:
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Analiza el código en busca de vulnerabilidades antes de confirmar"
+instructions: |
+ Buscar en los cambios:
+ - Vulnerabilidades OWASP Top 10
+ - Filtración de claves de API o secretos
+ - Corrección de la configuración del firewall/nftables
```
---
-## Autenticación
+## 🔐 Métodos de autenticación
+
+| Método | Comando / Variable | Limitaciones y características |
+| :--- | :--- | :--- |
+| **Autenticación de Google (Navegador)** | Automáticamente en el primer `agy` | Inicio de sesión estándar. Límite gratuito: 60 sol./min, 1000 sol./día |
+| **Clave de API (Fuera de línea)** | `export GEMINI_API_KEY="X"` | Recomendado para servidores y automatización |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Nivel empresarial con la infraestructura en la nube de Google Cloud |
+| **Cerrar sesión** | `/logout` | Borrado de tokens de sesión local |
-La CLI se autentica a través del llavero del sistema, recurriendo al inicio de sesión de Google si no existe una sesión activa.
+---
-- **Local**: Abre automáticamente su navegador predeterminado.
-- **Remoto / SSH**: Detecta sesiones SSH e imprime una URL de autorización para completar el inicio de sesión localmente.
-- **Cerrar sesión**: Ejecute `/logout` para borrar las credenciales guardadas.
+## 🔧 Referencia de comandos
-> [!NOTE]
-> Para acceso empresarial, conecte su proyecto de GCP durante el proceso de incorporación. Consulte la página de Enterprise para obtener más detalles.
+### Línea de comandos
+```bash
+agy # Iniciar una sesión interactiva
+agy -p "Mensaje de petición" # Ejecución única sin ingresar al chat
+agy -c # Continuar la última conversación incompleta
+agy --conversation # Cargar una sesión por un ID específico
+agy --sandbox # Ejecutar en un contenedor Docker aislado
+agy update # Actualizar el binario a la última versión
+agy plugin list # Listar los complementos instalados
+```
+
+### Comandos de barra diagonal (Slash Commands) en la interfaz de chat
+* `/help` — Ayuda sobre las herramientas disponibles.
+* `/settings` — Configuración interactiva de los ajustes.
+* `/usage` — Estadísticas de tokens utilizados y cuota.
+* `/diff` — Ver los cambios actuales no guardados en el proyecto.
+* `/statusline` — Configurar la visualización de la línea de estado del terminal.
---
-## Términos de servicio y uso de datos
+## 🔄 Migración desde Gemini CLI
> [!WARNING]
-> Se sabe que los agentes de codificación de IA conllevan ciertos riesgos de seguridad, incluida la ejecución autónoma de código, la filtración de datos, la inyección de directivas (prompts) y riesgos en la cadena de suministro. Asegúrese de supervisar y verificar todas las acciones realizadas por el agente.
+> La interfaz de línea de comandos original Gemini CLI (`gemini`) dejará de admitir cuentas que no sean empresariales el **18 de junio de 2026**. Se requiere la migración a Antigravity CLI.
+
+### Pasos para una transición rápida
+1. Instale el nuevo cliente: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Cambie el nombre de los archivos de configuración locales:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Actualice las configuraciones de CI/CD en GitHub Actions, reemplazando las llamadas a `gemini` por `agy`.
+4. Desinstale la biblioteca antigua: `npm uninstall -g @google/gemini-cli`
+
+### Tabla de comparación
+
+| Característica | Gemini CLI (Obsoleto) | Antigravity CLI (Moderno) |
+| :--- | :--- | :--- |
+| **Plataforma de desarrollo** | Node.js / TypeScript | Go (Binario compilado nativo) |
+| **Nombre del comando** | `gemini` | `agy` |
+| **Velocidad de inicio** | ~1.2s (inicio de Node.js) | **~0.05s (inicio nativo instantáneo)** |
+| **Archivo de configuración** | `GEMINI.md` | `.antigravity.md` |
+| **Actualización automática** | A través de `npm update` | Mecanismo de auto-actualización incorporado |
+| **Estado del soporte** | ⛔ Fin de la vida útil (18 de junio de 2026) | ✅ Desarrollo activo (Upstream) |
+
+---
+
+## 📁 Estructura del repositorio
+
+```
+antigravity-cli/
+├── install.sh # Instalador para Linux/macOS (fuera de línea/en línea)
+├── install.ps1 # Instalador para Windows PowerShell (fuera de línea/en línea)
+├── install.cmd # Instalador para Windows CMD
+├── Makefile # Destinos de automatización (make install/reinstall/uninstall)
+├── .antigravity.md # Plantilla de archivo de contexto del proyecto
+├── packages/ # Distribución local fuera de línea
+│ ├── manifests/ # Manifiestos de versión para todas las plataformas
+│ └── binaries/ # (Creado manualmente para el modo fuera de línea)
+└── CHANGELOG.md # Registro de cambios y registro de lanzamientos
+```
+
+---
-Al utilizar Antigravity CLI, acepta ayudar a mejorar el producto permitiendo que Google recopile y utilice sus datos de interacciones, de conformidad con los Términos de servicio de Google y la Política de privacidad de Google. Puede optar por no participar en cualquier momento a través de su configuración.
+## 🤝 Contribuir y Comunidad
-### Enlaces legales y de privacidad
+Este repositorio es una bifurcación comunitaria independiente del proyecto original [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+**Nuestras mejoras:**
+* 🌍 Soporte de localización en múltiples idiomas para documentos y guías.
+* 📦 Autonomía: capacidad de instalación fuera de línea sin descargas de la API de Google.
+* 🛠️ Conveniencia: se agregó `Makefile` para un ciclo de vida simplificado de la herramienta.
+* 🛡️ Seguridad: corrección periódica de errores y mejoras en el entorno aislado (sandbox).
+
+---
-- **Términos de servicio**: [antigravity.google/terms](https://antigravity.google/terms)
-- **Política de privacidad**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Aviso legal y de marca registrada
+
+* **Enlaces oficiales**: [Repositorio de documentación oficial](https://github.com/google-antigravity/antigravity-cli) · [Código base oficial de la CLI](https://github.com/google-gemini/gemini-cli) · [Sitio web oficial](https://antigravity.google)
+* **Condiciones de uso**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Estado legal de la bifurcación:**
+> Este repositorio es una copia independiente no comercial (Bifurcación de la comunidad) del cliente original. **No es** un producto oficial de Google LLC. Google LLC no se hace responsable del rendimiento, las modificaciones o la seguridad de esta bifurcación.
+>
+> **Licencias y derechos de autor:**
+> El software original se distribuye bajo la [Licencia Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0). Todo el código original es propiedad intelectual de **Copyright © 2025 Google LLC**.
+>
+> **Uso de marcas registradas:**
+> El nombre "Antigravity CLI" y los logotipos asociados se utilizan dentro de los límites del uso consuetudinario únicamente para describir el origen, la compatibilidad y el propósito funcional del software. Este proyecto no reclama la propiedad de ninguna marca registrada de Google LLC.
+>
+> **Renuncia de garantía:**
+> El software se proporciona "TAL CUAL", SIN GARANTÍAS DE NINGÚN TIPO, ya sean expresas o implícitas. Usted asume toda la responsabilidad y los riesgos asociados con su uso.
+
+> [!CAUTION]
+> Los agentes de codificación de IA funcionan de forma autónoma. Revise siempre con cuidado los bloques de diferencias (diff) y los comandos propuestos antes de confirmar la ejecución, especialmente cuando trabaje con archivos del sistema o la configuración del firewall.
diff --git a/README-FR.md b/README-FR.md
index 6acb2e684..174bee0de 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI comprend votre base de code, effectue des modifications avec votre autorisation et exécute des commandes — directement depuis votre terminal.
+🚀 Antigravity CLI
-- **Documentation officielle**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Site web officiel**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ Fork communautaire et version hors ligne renforcée de google-antigravity/antigravity-cli avec configuration automatique de la ligne d'état et du titre de la fenêtre
+
-
+
+
+
+
+
+
+
+
+ 🤖 Agent de codage IA directement dans votre terminal. Comprend le contexte de votre base de code, crée et modifie des fichiers, exécute des commandes sécurisées dans un bac à sable et résout des tâches architecturales complexes en un seul prompt.
+
---
-Antigravity CLI apporte les fonctionnalités fondamentales d'Antigravity 2.0 (raisonnement en plusieurs étapes, édition multi-fichiers, appels d'outils et historique persistant) directement dans votre terminal. Il est optimisé pour les flux de travail axés sur le clavier et les sessions SSH distantes avec une surcharge de ressources minimale.
+## ⚡ Démarrage rapide
----
+### Installation instantanée (Hors ligne d'abord & Sans dépendance)
+Ce fork télécharge des fichiers binaires précompilés directement depuis les **GitHub Release Assets** (au lieu des serveurs de l'API Google). Une installation complètement hors ligne est également prise en charge si les archives requises ont été préalablement chargées dans le dossier `packages/binaries/`.
-## Aperçu des fonctionnalités
+#### 🐧 Linux et 🍎 macOS
+```bash
+# Installation réseau à partir du dépôt du fork :
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# OU installation hors ligne à partir d'un dépôt local :
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (Optionnel : téléchargez les archives de la plateforme dans packages/binaries/)
+make install
+```
-| Fonctionnalité | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Objectif principal** | Vitesse, efficacité du clavier, faible surcharge | Exhaustivité, orchestration visuelle, gestion de projet |
-| **Interface** | Interface utilisateur de terminal (TUI) | Application GUI complète et riche |
-| **Flux de travail** | Sessions SSH/distantes, clavier d'abord | Espaces de travail locaux, orchestration lourde |
-| **Moteur d'agent** | Moteur d'agent central partagé | Moteur d'agent central partagé |
+#### 🪟 Windows PowerShell
+```powershell
+# Installation réseau :
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# OU installation hors ligne à partir d'un dépôt cloné :
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# Installation réseau :
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# OU installation hors ligne à partir d'un dépôt cloné :
+install.cmd
+```
---
-## Intégration
+## 📋 Principales fonctionnalités
+
+> [!NOTE]
+> Contrairement à la version originale, ce fork est adapté pour un fonctionnement stable dans les sessions sans écran (headless)/SSH et les laboratoires locaux.
-- **Moteur d'agent partagé** : Les deux interfaces s'exécutent sur le même moteur d'agent central. Les améliorations s'appliquent automatiquement aux deux.
-- **Paramètres partagés** : Les préférences et les autorisations se synchronisent de manière bidirectionnelle.
-- **Exportation de session** : Exportez les sessions de terminal vers l'interface graphique Antigravity 2.0 pour continuer à travailler.
+* 📂 **Édition multi-fichiers** — Modifie plusieurs fichiers simultanément dans votre espace de travail avec confirmation préalable des modifications.
+* 🔒 **Commandes shell sécurisées** — Exécute toutes les commandes du terminal dans le conteneur Docker intégré (bac à sable/sandbox) ou sur le système hôte.
+* 🧠 **Raisonnement en plusieurs étapes (PAV)** — Construit de manière indépendante un plan d'exécution des tâches, teste le code et débogue ses propres erreurs.
+* 💾 **Historique persistant des conversations** — Enregistre le contexte complet de la conversation et l'état de l'espace de travail entre les sessions.
+* 🔌 **Système de plug-ins** — Étendez les capacités de l'agent avec des *compétences (Skills)* personnalisées et des serveurs MCP (Model Context Protocol).
---
-## Installation
+## ⚙️ Configuration
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. Configuration du projet (`.antigravity.md`)
+Créez un fichier `.antigravity.md` à la racine de votre projet pour fournir un contexte spécifique et des règles de développement à l'agent IA :
+
+```markdown
+# Contexte du projet
+
+- Ce projet utilise FastAPI et Pydantic v2.
+- Utilisez toujours `model_dump()` à la place de la méthode obsolète `dict()`.
+- RÈGLE STRICTE : Pas de mots de passe codés en dur dans le code. Importez tous les secrets depuis le fichier `.env`.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. Paramètres globaux (`~/.gemini/settings.json`)
+Le fichier de configuration contrôle le comportement de l'interface utilisateur et les serveurs MCP :
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. Agents spécialisés (`~/.antigravity/agents/`)
+Vous pouvez décrire des rôles et des instructions personnalisés pour les agents IA au format YAML :
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Analyse le code à la recherche de vulnérabilités avant le commit"
+instructions: |
+ Vérifier les modifications pour :
+ - Les 10 vulnérabilités majeures de l'OWASP
+ - Les fuites de clés API ou de secrets
+ - L'exactitude de la configuration du pare-feu/nftables
```
---
-## Authentification
+## 🔐 Méthodes d'authentification
+
+| Méthode | Commande / Variable | Limites et fonctionnalités |
+| :--- | :--- | :--- |
+| **Authentification Google (Navigateur)** | Automatiquement lors du premier `agy` | Connexion standard. Limite gratuite : 60 requêtes/minute, 1000 requêtes/jour |
+| **Clé API (Hors ligne)** | `export GEMINI_API_KEY="X"` | Recommandé pour les serveurs et l'automatisation |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Niveau entreprise avec l'infrastructure cloud Google Cloud |
+| **Déconnexion** | `/logout` | Effacement des jetons de session locale |
-Le CLI s'authentifie via le trousseau d'accès du système, revenant à la connexion Google si aucune session active n'existe.
+---
-- **Local** : Ouvre automatiquement votre navigateur par défaut.
-- **Remoto / SSH** : Détecte les sessions SSH et affiche une URL d'autorisation pour terminer la connexion localement.
-- **Déconnexion** : Exécutez `/logout` pour effacer les identifiants enregistrés.
+## 🔧 Référence des commandes
-> [!NOTE]
-> Pour un accès entreprise, connectez votre projet GCP lors de l'intégration. Consultez la page Enterprise pour plus de détails.
+### Ligne de commande
+```bash
+agy # Démarrer une session interactive
+agy -p "Prompt" # Exécution unique sans entrer dans le chat
+agy -c # Continuer la dernière conversation incomplète
+agy --conversation # Charger une session par un ID spécifique
+agy --sandbox # Exécuter dans un conteneur Docker isolé
+agy update # Mettre à jour le binaire vers la dernière version
+agy plugin list # Lister les plug-ins installés
+```
+
+### Commandes slash dans l'interface de chat
+* `/help` — Aide sur les outils disponibles.
+* `/settings` — Configuration interactive des paramètres.
+* `/usage` — Statistiques des jetons consommés et quota.
+* `/diff` — Afficher les modifications actuelles non sauvegardées dans le projet.
+* `/statusline` — Configurer l'affichage de la ligne d'état du terminal.
---
-## Conditions d'utilisation et utilisation des données
+## 🔄 Migration depuis Gemini CLI
> [!WARNING]
-> Les agents de codage IA sont connus pour présenter certains risques de sécurité, notamment l'exécution autonome de code, l'exfiltration de données, l'injection de prompts et les risques liés à la chaîne d'approvisionnement. Assurez-vous de surveiller et de vérifier toutes les actions entreprises par l'agent.
+> L'interface de ligne de commande originale Gemini CLI (`gemini`) abandonnera le support pour les comptes non professionnels le **18 juin 2026**. La migration vers Antigravity CLI est requise.
+
+### Étapes pour une transition rapide
+1. Installez le nouveau client : `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Renommez les fichiers de configuration locaux :
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Mettez à jour les configurations CI/CD dans GitHub Actions, en remplaçant les appels `gemini` par `agy`.
+4. Désinstallez l'ancienne bibliothèque : `npm uninstall -g @google/gemini-cli`
+
+### Tableau comparatif
+
+| Fonctionnalité | Gemini CLI (Obsolète) | Antigravity CLI (Moderne) |
+| :--- | :--- | :--- |
+| **Plateforme de développement** | Node.js / TypeScript | Go (Binaire natif compilé) |
+| **Nom de la commande** | `gemini` | `agy` |
+| **Vitesse de démarrage** | ~1.2s (démarrage Node.js) | **~0.05s (démarrage natif instantané)** |
+| **Fichier de configuration** | `GEMINI.md` | `.antigravity.md` |
+| **Mise à jour automatique** | Via `npm update` | Mécanisme d'auto-mise à jour intégré |
+| **Statut du support** | ⛔ EOL (18 juin 2026) | ✅ Développement actif (Upstream) |
+
+---
+
+## 📁 Structure du dépôt
+
+```
+antigravity-cli/
+├── install.sh # Programme d'installation pour Linux/macOS (hors ligne/en ligne)
+├── install.ps1 # Programme d'installation pour Windows PowerShell (hors ligne/en ligne)
+├── install.cmd # Programme d'installation pour Windows CMD
+├── Makefile # Cibles d'automatisation (make install/reinstall/uninstall)
+├── .antigravity.md # Modèle de fichier de contexte de projet
+├── packages/ # Distribution hors ligne locale
+│ ├── manifests/ # Manifestes de version pour toutes les plateformes
+│ └── binaries/ # (Créé manuellement pour le mode hors ligne)
+└── CHANGELOG.md # Journal des modifications et des versions
+```
+
+---
-En utilisant Antigravity CLI, vous acceptez d'aider à améliorer le produit en autorisant Google à collecter et utiliser vos données d'interactions, conformément aux Conditions d'utilisation de Google et à la Règles de confidentialité de Google. Vous pouvez choisir de vous désinscrire à tout moment via vos paramètres.
+## 🤝 Contribution & Communauté
-### Liens juridiques et confidentialité
+Ce dépôt est un fork communautaire indépendant du projet original [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+**Nos améliorations :**
+* 🌍 Prise en charge de la localisation multilingue pour la documentation et les guides.
+* 📦 Autonomie : capacité d'installation hors ligne sans téléchargements depuis les API Google.
+* 🛠️ Praticité : ajout d'un `Makefile` pour un cycle de vie simplifié de l'outil.
+* 🛡️ Sécurité : corrections régulières de bogues et améliorations de l'environnement de bac à sable.
+
+---
-- **Conditions d'utilisation** : [antigravity.google/terms](https://antigravity.google/terms)
-- **Règles de confidentialité** : [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Avis légal & Propriété intellectuelle
+
+* **Liens officiels** : [Dépôt de documentation officiel](https://github.com/google-antigravity/antigravity-cli) · [Base de code officielle de la CLI](https://github.com/google-gemini/gemini-cli) · [Site officiel](https://antigravity.google)
+* **Conditions d'utilisation** : [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Statut juridique du fork :**
+> Ce dépôt est une copie indépendante non commerciale (Community Fork) du client d'origine. Ce **n'est pas** un produit officiel de Google LLC. Google LLC n'est pas responsable des performances, des modifications ou de la sécurité de ce fork.
+>
+> **Licences et droits d'auteur :**
+> Le logiciel d'origine est distribué sous la [Licence Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0). Tout le code d'origine est la propriété intellectuelle de **Copyright © 2025 Google LLC**.
+>
+> **Utilisation de la marque :**
+> Le nom "Antigravity CLI" et les logos associés sont utilisés dans les limites de l'usage coutumier uniquement pour décrire l'origine, la compatibilité et le but fonctionnel du logiciel. Ce projet ne revendique aucun droit de propriété sur les marques de Google LLC.
+>
+> **Exclusion de garantie :**
+> Le logiciel est fourni "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, expresse ou implicite. Vous assumez toute responsabilité et tous les risques associés à son utilisation.
+
+> [!CAUTION]
+> Les agents de codage IA fonctionnent de manière autonome. Examinez toujours attentivement les blocs de diff proposés et les commandes avant de confirmer l'exécution, en particulier lorsque vous travaillez avec des fichiers système ou la configuration du pare-feu.
diff --git a/README-PT.md b/README-PT.md
index ec843d196..8bf3b9197 100644
--- a/README-PT.md
+++ b/README-PT.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI compreende a sua base de código, faz edições com a sua permissão e executa comandos — diretamente do seu terminal.
+🚀 Antigravity CLI
-- **Documentação Oficial**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **Website Oficial**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ Fork da comunidade e versão offline de google-antigravity/antigravity-cli com configuração automática de statusline e título de janela
+
-
+
+
+
+
+
+
+
+
+ 🤖 Agente de codificação de IA diretamente no seu terminal. Compreende o contexto da sua base de código, cria e edita arquivos, executa comandos seguros em uma sandbox e resolve tarefas arquitetônicas complexas em um único prompt.
+
---
-O Antigravity CLI traz os recursos principais do Antigravity 2.0 (raciocínio em várias etapas, edição de vários arquivos, chamadas de ferramentas e histórico persistente) diretamente para o seu terminal. Ele é otimizado para fluxos de trabalho orientados por teclado e sessões SSH remotas com sobrecarga mínima de recursos.
+## ⚡ Início Rápido
----
+### Instalação Instantânea (Foco em Offline e Sem Dependências)
+Este fork faz o download de binários pré-compilados diretamente dos **GitHub Release Assets** (em vez dos servidores de API da Google). A instalação totalmente offline também é suportada se os arquivos necessários tiverem sido previamente carregados na pasta `packages/binaries/`.
-## Visão Geral dos Recursos
+#### 🐧 Linux e 🍎 macOS
+```bash
+# Instalação via rede a partir do repositório do fork:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# OU instalação offline a partir de um repositório local:
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (Opcional: baixe os arquivos da plataforma em packages/binaries/)
+make install
+```
-| Recurso | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **Foco Principal** | Velocidade, eficiência do teclado, baixa sobrecarga | Abrangência, orquestração visual, gerenciamento de projetos |
-| **Interface** | Interface de Usuário de Terminal (TUI) | Aplicativo GUI Completo e Rico |
-| **Fluxos de Trabalho** | Sessões SSH/remotas, primeiro o teclado | Espaços de trabalho locais, orquestração pesada |
-| **Motor de Agente** | Motor de Agente Central Compartilhado | Motor de Agente Central Compartilhado |
+#### 🪟 Windows PowerShell
+```powershell
+# Instalação via rede:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# OU instalação offline a partir de um repositório clonado:
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# Instalação via rede:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# OU instalação offline a partir de um repositório clonado:
+install.cmd
+```
---
-## Integração
+## 📋 Recursos Principais
+
+> [!NOTE]
+> Ao contrário da versão original, este fork é adaptado para uma operação estável em sessões headless/SSH e laboratórios domésticos locais.
-- **Motor de Agente Compartilhado**: Ambas as interfaces rodam no mesmo motor de agente central. As melhorias se aplicam automaticamente a ambas.
-- **Configurações Compartilhadas**: As preferências e as permissões são sincronizadas bidirecionalmente.
-- **Exportação de Sessão**: Exporte sessões de terminal para a GUI do Antigravity 2.0 para continuar trabalhando.
+* 📂 **Edição de Múltiplos Arquivos** — Edita vários arquivos simultaneamente no seu espaço de trabalho com confirmação prévia das alterações.
+* 🔒 **Comandos de Shell Seguros** — Executa qualquer comando de terminal no container Docker integrado (sandbox) ou no sistema host.
+* 🧠 **Raciocínio em Várias Etapas (PAV)** — Constrói de forma independente um plano de execução de tarefas, testa o código e depura os seus próprios erros.
+* 💾 **Histórico de Conversa Persistente** — Salva o contexto completo da conversa e o estado do espaço de trabalho entre as sessões.
+* 🔌 **Sistema de Plugins** — Estenda as capacidades do agente com *habilidades (Skills)* personalizadas e servidores MCP (Model Context Protocol).
---
-## Instalação
+## ⚙️ Configuração
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. Configuração do Projeto (`.antigravity.md`)
+Crie um arquivo `.antigravity.md` na raiz do seu projeto para fornecer contexto específico e regras de desenvolvimento ao agente de IA:
+
+```markdown
+# Contexto do Projeto
+
+- Este projeto usa FastAPI e Pydantic v2.
+- Sempre use `model_dump()` em vez do obsoleto `dict()`.
+- REGRA ESTRITA: Sem senhas expostas no código (hardcoded). Importe todos os segredos do `.env`.
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. Configurações Globais (`~/.gemini/settings.json`)
+O arquivo de configuração controla o comportamento da interface do usuário e os servidores MCP:
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. Agentes Especializados (`~/.antigravity/agents/`)
+Você pode descrever funções e instruções personalizadas para agentes de IA no formato YAML:
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "Analisa o código em busca de vulnerabilidades antes do commit"
+instructions: |
+ Verificar alterações para:
+ - Vulnerabilidades OWASP Top 10
+ - Vazamento de chaves de API ou segredos
+ - Correção da configuração do firewall/nftables
```
---
-## Autenticação
+## 🔐 Métodos de Autenticação
+
+| Método | Comando / Variável | Limitações e Recursos |
+| :--- | :--- | :--- |
+| **Google Auth (Navegador)** | Automaticamente no primeiro `agy` | Login padrão. Limite gratuito: 60 req/min, 1000 req/dia |
+| **Chave de API (Offline)** | `export GEMINI_API_KEY="X"` | Recomendado para servidores e automação |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | Nível corporativo com infraestrutura em nuvem do Google Cloud |
+| **Sair (Sign Out)** | `/logout` | Limpeza de tokens de sessão local |
-A CLI se autentica por meio do chaveiro do sistema, recorrendo ao login do Google se não houver sessão ativa.
+---
-- **Local**: Abre automaticamente o seu navegador padrão.
-- **Remoto / SSH**: Detecta sessões SSH e exibe uma URL de autorização para concluir o login localmente.
-- **Sair**: Execute `/logout` para limpar as credenciais salvas.
+## 🔧 Referência de Comandos
-> [!NOTE]
-> Para acesso corporativo, conecte seu projeto do GCP durante a integração. Consulte la página de Enterprise para obter mais detalhes.
+### Linha de Comando
+```bash
+agy # Iniciar uma sessão interativa
+agy -p "Prompt" # Execução única sem entrar no chat
+agy -c # Continuar a última conversa incompleta
+agy --conversation # Carregar uma sessão por um ID específico
+agy --sandbox # Executar em um container Docker isolado
+agy update # Atualizar o binário para a versão mais recente
+agy plugin list # Listar os plugins instalados
+```
+
+### Comandos de Barra (Slash Commands) na Interface de Chat
+* `/help` — Ajuda sobre ferramentas disponíveis.
+* `/settings` — Configuração interativa de definições.
+* `/usage` — Estatísticas de tokens gastos e cota.
+* `/diff` — Visualizar as alterações atuais não salvas no projeto.
+* `/statusline` — Configurar a exibição da linha de status do terminal.
---
-## Termos de Serviço e Uso de Dados
+## 🔄 Migração do Gemini CLI
> [!WARNING]
-> Sabe-se que os agentes de codificação de IA apresentam certos riscos de segurança, incluindo execução autônoma de código, exfiltração de dados, injeção de prompt e riscos na cadeia de suprimentos. Certifique-se de monitorar e verificar todas as ações tomadas pelo agente.
+> A interface de linha de comando original Gemini CLI (`gemini`) deixará de oferecer suporte para contas não corporativas em **18 de junho de 2026**. A migração para o Antigravity CLI é necessária.
+
+### Passos para Transição Rápida
+1. Instale o novo cliente: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. Renomeie os arquivos de configuração locais:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. Atualize as configurações de CI/CD no GitHub Actions, substituindo as chamadas de `gemini` por `agy`.
+4. Desinstale a biblioteca antiga: `npm uninstall -g @google/gemini-cli`
+
+### Tabela de Comparação
+
+| Recurso | Gemini CLI (Legado) | Antigravity CLI (Moderno) |
+| :--- | :--- | :--- |
+| **Plataforma de Desenvolvimento** | Node.js / TypeScript | Go (Binário Nativo Compilado) |
+| **Nome do Comando** | `gemini` | `agy` |
+| **Velocidade de Inicialização** | ~1.2s (inicialização do Node.js) | **~0.05s (inicialização nativa instantânea)** |
+| **Arquivo de Configuração** | `GEMINI.md` | `.antigravity.md` |
+| **Atualização Automática** | Via `npm update` | Mecanismo de auto-atualização integrado |
+| **Status do Suporte** | ⛔ Fim da vida útil (18 de junho de 2026) | ✅ Desenvolvimento Ativo (Upstream) |
+
+---
+
+## 📁 Estrutura do Repositório
+
+```
+antigravity-cli/
+├── install.sh # Instalador para Linux/macOS (offline/online)
+├── install.ps1 # Instalador para Windows PowerShell (offline/online)
+├── install.cmd # Instalador para Windows CMD
+├── Makefile # Metas de automação (make install/reinstall/uninstall)
+├── .antigravity.md # Modelo de arquivo de contexto de projeto
+├── packages/ # Distribuição offline local
+│ ├── manifests/ # Manifestos de versão para todas as plataformas
+│ └── binaries/ # (Criado manualmente para o modo offline)
+└── CHANGELOG.md # Registro de alterações e lançamentos
+```
+
+---
-Ao usar o Antigravity CLI, você concorda em ajudar a melhorar o produto, permitindo que a Google colete e use seus dados de interações, sujeito aos Termos de Serviço da Google e à Política de Privacidade da Google. Você pode optar por sair a qualquer momento por meio de suas configurações.
+## 🤝 Contribuição & Comunidade
-### Links Legais e de Privacidade
+Este repositório é um fork da comunidade independente do projeto original [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli).
+
+**Nossas Melhorias:**
+* 🌍 Suporte de localização em vários idiomas para documentos e guias.
+* 📦 Autonomia: capacidade de instalação offline sem downloads da API da Google.
+* 🛠️ Conveniência: adicionado `Makefile` para um ciclo de vida simplificado da ferramenta.
+* 🛡️ Segurança: correções regulares de bugs e melhorias no ambiente de sandbox.
+
+---
-- **Termos de Serviço**: [antigravity.google/terms](https://antigravity.google/terms)
-- **Política de Privacidade**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 Aviso Legal & Marcas Registradas
+
+* **Links Oficiais**: [Repositório Oficial de Documentação](https://github.com/google-antigravity/antigravity-cli) · [Base de Código Oficial do CLI](https://github.com/google-gemini/gemini-cli) · [Website Oficial](https://antigravity.google)
+* **Termos de Uso**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **Status Legal do Fork:**
+> Este repositório é uma cópia independente não comercial (Fork da Comunidade) do cliente original. Ele **não é** um produto oficial da Google LLC. A Google LLC não se responsabiliza pelo desempenho, modificações ou segurança deste fork.
+>
+> **Licenciamento & Direitos Autorais:**
+> O software original é distribuído sob a [Licença Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0). Todo o código original é propriedade intelectual de **Copyright © 2025 Google LLC**.
+>
+> **Uso de Marca Registrada:**
+> O nome "Antigravity CLI" e os logotipos associados são usados dentro dos limites do Uso Habitual exclusivamente para descrever a origem, compatibilidade e propósito funcional do software. Este projeto não reivindica a propriedade de nenhuma marca registrada da Google LLC.
+>
+> **Isenção de Garantia:**
+> O software é fornecido "COMO ESTÁ", SEM GARANTIAS DE QUALQUER TIPO, expressas ou implícitas. Você assume toda a responsabilidade e riscos associados ao seu uso.
+
+> [!CAUTION]
+> Os agentes de codificação de IA operam de forma autônoma. Sempre revise cuidadosamente os blocos de diff propostos e os comandos antes de confirmar a execução, especialmente ao trabalhar com arquivos do sistema ou configuração do firewall.
diff --git a/README-UA.md b/README-UA.md
index 055f037e9..353313c64 100644
--- a/README-UA.md
+++ b/README-UA.md
@@ -9,7 +9,7 @@
🚀 Antigravity CLI
- Community-Fork & Hardened Offline Version of google-antigravity/antigravity-cli
+ Ком'юніті-форк та покращена офлайн-версія google-antigravity/antigravity-cli з автоналаштуванням статуслайну та заголовка вікна
diff --git a/README-ZH.md b/README-ZH.md
index ebc773174..b02b1ffe5 100644
--- a/README-ZH.md
+++ b/README-ZH.md
@@ -2,80 +2,235 @@
English | 中文 | Español | Français | Português | Українська | Deutsch
-# Antigravity CLI
+
+
+
-Antigravity CLI 能够理解您的代码库、在获得您许可的情况下编辑文件并执行命令——直接在您的终端中进行。
+🚀 Antigravity CLI
-- **官方文档**: [antigravity.google/docs/cli-overview](https://antigravity.google/docs/cli-overview)
-- **官方网站**: [antigravity.google/product/antigravity-cli](https://antigravity.google/product/antigravity-cli)
+
+ 社区分叉与硬化离线版 google-antigravity/antigravity-cli,支持状态栏和窗口标题的自动设置
+
-
+
+
+
+
+
+
+
+
+ 🤖 直接在您的终端中运行 of AI 编码智能体。理解您的代码库上下文,创建和编辑文件,在沙箱中执行安全命令,并在单个提示词中解决复杂的架构任务。
+
---
-Antigravity CLI 将 Antigravity 2.0 的核心能力(多步推理、多文件编辑、工具调用和持久化历史记录)直接带入您的终端。它针对键盘驱动的常规工作流以及具有极低资源开销的远程 SSH 会话进行了优化。
+## ⚡ 快速开始
----
+### 即时安装(离线优先与零依赖)
+此分叉版本直接从 **GitHub Release Assets**(而不是 Google API 服务器)下载预编译的二进制文件。如果预先将所需的归档文件加载到 `packages/binaries/` 文件夹中,则同样支持完全自治的离线安装。
-## 功能概览
+#### 🐧 Linux 和 🍎 macOS
+```bash
+# 从分叉存储库进行网络安装:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash
+
+# 或者从本地存储库进行离线安装:
+git clone https://github.com/weby-homelab/antigravity-cli.git
+cd antigravity-cli
+# (可选:将对应平台的归档文件下载到 packages/binaries/ 中)
+make install
+```
-| 功能 | Antigravity CLI | Antigravity 2.0 |
-| :--- | :--- | :--- |
-| **主要侧重点** | 速度、键盘效率、低开销 | 全面性、可视化编排、项目管理 |
-| **界面** | 终端用户界面 (TUI) | 完整丰富的 GUI 应用程序 |
-| **工作流** | SSH/远程会话,键盘优先 | 本地工作区,重度编排 |
-| **智能体引擎** | 共享核心智能体引擎 | 共享核心智能体引擎 |
+#### 🪟 Windows PowerShell
+```powershell
+# 网络安装:
+irm https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.ps1 | iex
+
+# 或者从克隆的存储库进行离线安装:
+.\install.ps1
+```
+
+#### 🪟 Windows CMD
+```cmd
+# 网络安装:
+curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.cmd -o install.cmd && install.cmd && del install.cmd
+
+# 或者从克隆的存储库进行离线安装:
+install.cmd
+```
---
-## 整合与协同
+## 📋 核心功能
+
+> [!NOTE]
+> 与原始版本不同,此分叉版本经过特别优化,适用于无头(headless)环境、SSH 会话以及本地家庭实验室(Home Labs)中的稳定运行。
-- **共享智能体引擎**: 两种界面均运行在相同的核心智能体引擎上。改进将自动应用到两者。
-- **共享设置**: 偏好设置和权限进行双向同步。
-- **会话导出**: 将终端会话导出至 Antigravity 2.0 GUI 以继续工作。
+* 📂 **多文件编辑** — 在您的工作区中同时编辑多个文件,并在应用更改前进行确认。
+* 🔒 **安全 Shell 命令** — 在内置的 Docker 容器(沙箱)或主机系统上执行任意终端命令。
+* 🧠 **多步推理 (PAV)** — 独立构建任务执行计划,测试代码并调试自身的错误。
+* 💾 **持久化会话历史记录** — 在会话之间保存完整的对话上下文和工作区状态。
+* 🔌 **插件系统** — 使用自定义 *技能 (Skills)* 和 MCP(Model Context Protocol,模型上下文协议)服务器扩展智能体的能力。
---
-## 安装
+## ⚙️ 配置方式
-### macOS / Linux
-```bash
-curl -fsSL https://antigravity.google/cli/install.sh | bash
+### 1. 项目配置 (`.antigravity.md`)
+在项目的根目录下创建一个 `.antigravity.md` 文件,为 AI 智能体提供特定的项目上下文和开发规则:
+
+```markdown
+# 项目上下文
+
+- 本项目使用 FastAPI 和 Pydantic v2。
+- 请始终使用 `model_dump()` 代替已废弃的 `dict()`。
+- 严格规则:严禁在代码中硬编码任何密码。所有机密信息必须从 `.env` 文件导入。
```
-### Windows PowerShell
-```powershell
-irm https://antigravity.google/cli/install.ps1 | iex
+### 2. 全局设置 (`~/.gemini/settings.json`)
+此配置文件控制 UI 行为和 MCP 服务器:
+
+```json
+{
+ "theme": "terminal",
+ "sandbox": false,
+ "defaultApprovalMode": "auto_edit",
+ "ui": {
+ "showFooter": true
+ },
+ "mcpServers": {
+ "github": {
+ "command": "npx",
+ "args": ["-y", "@modelcontextprotocol/server-github"]
+ }
+ }
+}
```
-### Windows CMD
-```cmd
-curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
+### 3. 专业智能体 (`~/.antigravity/agents/`)
+您可以使用 YAML 格式定义 AI 智能体的自定义角色 and 说明:
+
+```yaml
+# ~/.antigravity/agents/security-reviewer.yaml
+name: security-reviewer
+description: "在提交前分析代码漏洞"
+instructions: |
+ 检查更改内容:
+ - OWASP Top 10 漏洞
+ - API 密钥或凭证泄露
+ - 防火墙/nftables 配置正确性
```
---
-## 身份验证
+## 🔐 身份验证方式
+
+| 方法 | 命令 / 环境变量 | 限制与特点 |
+| :--- | :--- | :--- |
+| **Google 身份验证(浏览器)** | 首次运行 `agy` 时自动触发 | 标准登录。免费限制:60 次请求/分钟,1000 次请求/天 |
+| **API 密钥(离线)** | `export GEMINI_API_KEY="X"` | 推荐用于服务器环境和自动化工作流 |
+| **Vertex AI** | `export GOOGLE_GENAI_USE_VERTEXAI=true` | 企业级方案,使用 Google Cloud 云基础设施 |
+| **注销登录** | `/logout` | 清除本地会话令牌 |
-CLI 通过系统钥匙串进行身份验证,如果不存在活动会话,则回退到 Google 登录。
+---
-- **本地**: 自动打开您的默认浏览器。
-- **远程 / SSH**: 检测 SSH 会话并打印授权 URL,以便在本地完成登录。
-- **退出登录**: 运行 `/logout` 以清除保存的凭据。
+## 🔧 常用命令参考
-> [!NOTE]
-> 如需企业访问,请在新手引导期间连接您的 GCP 项目。详情请参阅企业版页面。
+### 命令行工具
+```bash
+agy # 启动交互式会话
+agy -p "提示词" # 单次执行,不进入聊天界面
+agy -c # 继续上一次未完成的对话
+agy --conversation # 通过特定 ID 加载会话
+agy --sandbox # 在隔离的 Docker 容器中运行
+agy update # 更新二进制文件到最新版本
+agy plugin list # 列出已安装的插件
+```
+
+### 聊天界面中的斜杠命令 (Slash Commands)
+* `/help` — 获取可用工具的帮助信息。
+* `/settings` — 交互式配置设置项。
+* `/usage` — 消耗的令牌(Token)数量和配额统计。
+* `/diff` — 查看项目中当前未保存的更改。
+* `/statusline` — 配置终端状态栏的显示。
---
-## 服务条款与数据使用
+## 🔄 从 Gemini CLI 迁移
> [!WARNING]
-> 众所周知,AI 编码智能体存在一定的安全风险,包括自主代码执行、数据外泄、提示词注入以及供应链风险。请务必监控并验证智能体执行的所有操作。
+> 原始的 Gemini CLI (`gemini`) 将于 **2026 年 6 月 18 日**起停止对非企业账户的支持。请及时迁移到 Antigravity CLI。
+
+### 快速迁移步骤
+1. 安装新客户端:`curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
+2. 重命名本地配置文件:
+ ```bash
+ mv GEMINI.md .antigravity.md
+ mv ~/.gemini/agents/ ~/.antigravity/agents/
+ ```
+3. 更新 GitHub Actions 中的 CI/CD 配置,将所有的 `gemini` 调用替换为 `agy`。
+4. 卸载旧的依赖库:`npm uninstall -g @google/gemini-cli`
+
+### 对比表
+
+| 功能 / 属性 | Gemini CLI (旧版) | Antigravity CLI (新版) |
+| :--- | :--- | :--- |
+| **开发语言/平台** | Node.js / TypeScript | Go (原生编译的二进制文件) |
+| **执行命令** | `gemini` | `agy` |
+| **启动速度** | ~1.2秒 (Node.js 启动延迟) | **~0.05秒 (原生瞬间启动)** |
+| **项目配置文件** | `GEMINI.md` | `.antigravity.md` |
+| **自动更新** | 通过 `npm update` | 内置的自我更新机制 |
+| **维护状态** | ⛔ 已停止支持 (2026年6月18日) | ✅ 持续活跃开发 (上游支持) |
+
+---
+
+## 📁 存储库结构
+
+```
+antigravity-cli/
+├── install.sh # Linux/macOS 安装程序 (离线/在线)
+├── install.ps1 # Windows PowerShell 安装程序 (离线/在线)
+├── install.cmd # Windows CMD 安装程序
+├── Makefile # 自动化目标 (make install/reinstall/uninstall)
+├── .antigravity.md # 项目上下文模板文件
+├── packages/ # 本地离线分发包
+│ ├── manifests/ # 适用于所有平台的版本清单
+│ └── binaries/ # (离线模式下需手动创建)
+└── CHANGELOG.md # 变更日志和发布记录
+```
+
+---
-通过使用 Antigravity CLI,您同意允许 Google 收集并使用您的交互数据以帮助改善产品,这受 Google 服务条款和 Google 隐私权政策的约束。您可以随时通过设置选择退出。
+## 🤝 参与贡献与社区
-### 法律与隐私链接
+本仓库是原始上游项目 [google-antigravity/antigravity-cli](https://github.com/google-antigravity/antigravity-cli) 的独立社区分叉版本。
+
+**我们的改进:**
+* 🌍 支持文档和指南的多语言本地化。
+* 📦 自主性:具备完全离线安装能力,无需从 Google API 服务器下载。
+* 🛠️ 便利性:添加了 `Makefile`,简化工具生命周期管理。
+* 🛡️ 安全性:针对沙箱环境进行持续的安全改进和漏洞修复。
+
+---
-- **服务条款**: [antigravity.google/terms](https://antigravity.google/terms)
-- **隐私权政策**: [policies.google.com/privacy](https://policies.google.com/privacy)
+## 📜 法律声明与商标说明
+
+* **官方链接**: [官方文档仓库](https://github.com/google-antigravity/antigravity-cli) · [官方 CLI 代码库](https://github.com/google-gemini/gemini-cli) · [官方网站](https://antigravity.google)
+* **使用条款**: [antigravity.google/terms](https://antigravity.google/terms) · [policies.google.com/privacy](https://policies.google.com/privacy)
+
+> [!IMPORTANT]
+> **分叉版法律地位:**
+> 本存储库是原始客户端的独立非商业副本(社区分叉版本)。它**不是** Google LLC 的官方产品。Google LLC 对此分叉版本的性能、修改或安全性不承担任何责任。
+>
+> **许可与版权信息:**
+> 原始软件基于 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 协议分发。所有原始代码的知识产权均归 **Copyright © 2025 Google LLC** 所有。
+>
+> **商标使用说明:**
+> "Antigravity CLI" 名称及相关徽标仅在合理使用(Customary Use)限制范围内使用,以描述软件的来源、兼容性和功能用途。本分叉项目不声称拥有 Google LLC 任何商标的所有权。
+>
+> **免责声明:**
+> 本软件按“原样”提供,不提供任何明示或暗示的保证。您需自行承担使用该软件的所有责任和风险。
+
+> [!CAUTION]
+> AI 编码智能体运行具有自主性。在确认执行前,请务必仔细检查其建议的 diff 代码块和执行命令,尤其是在处理系统文件或防火墙配置时。
diff --git a/README.md b/README.md
index fc239558f..3df5438df 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
🚀 Antigravity CLI
- Community-Fork & Hardened Offline Version of google-antigravity/antigravity-cli
+ Community-Fork & Hardened Offline Version of google-antigravity/antigravity-cli with automatic statusline & window title setup
From 5d4fc5434e6aa97ffa68938dce32250fdbe5e510 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 11:08:05 +0300
Subject: [PATCH 16/22] docs: correct settings.json file path and config schema
in all READMEs
---
README-DE.md | 21 ++++++++++++++-------
README-ES.md | 21 ++++++++++++++-------
README-FR.md | 21 ++++++++++++++-------
README-PT.md | 21 ++++++++++++++-------
README-UA.md | 21 ++++++++++++++-------
README-ZH.md | 21 ++++++++++++++-------
README.md | 21 ++++++++++++++-------
7 files changed, 98 insertions(+), 49 deletions(-)
diff --git a/README-DE.md b/README-DE.md
index ee26f3456..83be42447 100644
--- a/README-DE.md
+++ b/README-DE.md
@@ -88,16 +88,23 @@ Erstellen Sie eine `.antigravity.md`-Datei im Stammverzeichnis Ihres Projekts, u
- STRIKTE REGEL: Keine fest codierten Passwörter im Code. Importieren Sie alle Geheimnisse aus `.env`.
```
-### 2. Globale Einstellungen (`~/.gemini/settings.json`)
-Die Konfigurationsdatei steuert das UI-Verhalten und die MCP-Server:
+### 2. Globale Einstellungen (`~/.gemini/antigravity-cli/settings.json`)
+Die globale Einstellungsdatei steuert Berechtigungen zur Tool-Ausführung, Statuszeilen-/Titel-Skripte und MCP-Server:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README-ES.md b/README-ES.md
index 3995803ad..fec44358f 100644
--- a/README-ES.md
+++ b/README-ES.md
@@ -88,16 +88,23 @@ Cree un archivo `.antigravity.md` en la raíz de su proyecto para proporcionar u
- REGLA ESTRICTA: No use contraseñas hardcoded en el código. Importe todos los secretos desde `.env`.
```
-### 2. Configuración global (`~/.gemini/settings.json`)
-El archivo de configuración controla el comportamiento de la interfaz de usuario y los servidores MCP:
+### 2. Configuración global (`~/.gemini/antigravity-cli/settings.json`)
+El archivo de configuración global controla los permisos de ejecución de herramientas, los scripts de statusline/título y los servidores MCP:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README-FR.md b/README-FR.md
index 174bee0de..05c92611f 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -88,16 +88,23 @@ Créez un fichier `.antigravity.md` à la racine de votre projet pour fournir un
- RÈGLE STRICTE : Pas de mots de passe codés en dur dans le code. Importez tous les secrets depuis le fichier `.env`.
```
-### 2. Paramètres globaux (`~/.gemini/settings.json`)
-Le fichier de configuration contrôle le comportement de l'interface utilisateur et les serveurs MCP :
+### 2. Paramètres globaux (`~/.gemini/antigravity-cli/settings.json`)
+Le fichier de configuration globale contrôle les autorisations d'exécution des outils, les scripts de statusline/titre et les serveurs MCP :
+
+- **Linux/Unix** : `~/.gemini/antigravity-cli/settings.json`
+- **macOS** : `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows** : `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README-PT.md b/README-PT.md
index 8bf3b9197..19fba2504 100644
--- a/README-PT.md
+++ b/README-PT.md
@@ -88,16 +88,23 @@ Crie um arquivo `.antigravity.md` na raiz do seu projeto para fornecer contexto
- REGRA ESTRITA: Sem senhas expostas no código (hardcoded). Importe todos os segredos do `.env`.
```
-### 2. Configurações Globais (`~/.gemini/settings.json`)
-O arquivo de configuração controla o comportamento da interface do usuário e os servidores MCP:
+### 2. Configurações Globais (`~/.gemini/antigravity-cli/settings.json`)
+O arquivo de configuração global controla as permissões de execução de ferramentas, scripts de statusline/título e servidores MCP:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README-UA.md b/README-UA.md
index 353313c64..6285c9292 100644
--- a/README-UA.md
+++ b/README-UA.md
@@ -88,16 +88,23 @@ install.cmd
- СУВОРЕ ПРАВИЛО: Жодних хардкод-паролів у коді. Всі секрети імпортувати з `.env`.
```
-### 2. Глобальні налаштування (`~/.gemini/settings.json`)
-Конфігураційний файл керує поведінкою інтерфейсу та MCP-серверами:
+### 2. Глобальні налаштування (`~/.gemini/antigravity-cli/settings.json`)
+Глобальний файл налаштувань керує дозволами на виконання інструментів, скриптами статуслайну/заголовка та MCP-серверами:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README-ZH.md b/README-ZH.md
index b02b1ffe5..fe697d022 100644
--- a/README-ZH.md
+++ b/README-ZH.md
@@ -88,16 +88,23 @@ install.cmd
- 严格规则:严禁在代码中硬编码任何密码。所有机密信息必须从 `.env` 文件导入。
```
-### 2. 全局设置 (`~/.gemini/settings.json`)
-此配置文件控制 UI 行为和 MCP 服务器:
+### 2. 全局设置 (`~/.gemini/antigravity-cli/settings.json`)
+全局配置文件控制工具执行权限、状态栏/窗口标题脚本以及 MCP 服务器:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
diff --git a/README.md b/README.md
index 3df5438df..520de81ee 100644
--- a/README.md
+++ b/README.md
@@ -88,16 +88,23 @@ Create an `.antigravity.md` file in the root of your project to provide specific
- STRICT RULE: No hardcoded passwords in code. Import all secrets from `.env`.
```
-### 2. Global Settings (`~/.gemini/settings.json`)
-The configuration file controls the UI behavior and MCP servers:
+### 2. Global Settings (`~/.gemini/antigravity-cli/settings.json`)
+The global settings file controls tool execution permissions, statusline/title scripts, and MCP servers:
+
+- **Linux/Unix**: `~/.gemini/antigravity-cli/settings.json`
+- **macOS**: `~/Library/Application Support/antigravity-cli/settings.json`
+- **Windows**: `%APPDATA%\antigravity-cli\settings.json`
```json
{
- "theme": "terminal",
- "sandbox": false,
- "defaultApprovalMode": "auto_edit",
- "ui": {
- "showFooter": true
+ "toolPermission": "always-proceed",
+ "statusLine": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ },
+ "title": {
+ "enabled": true,
+ "command": "/root/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
From e27d0c95291cc700612b6b3cae5d8fc66973fa55 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 14:23:52 +0300
Subject: [PATCH 17/22] fix: correct project context filename to GEMINI.md and
specialized agents schema in all READMEs
---
.antigravity.md => GEMINI.md | 0
README-DE.md | 44 ++++++++++++++++------------------
README-ES.md | 44 ++++++++++++++++------------------
README-FR.md | 44 ++++++++++++++++------------------
README-PT.md | 46 +++++++++++++++++-------------------
README-UA.md | 44 ++++++++++++++++------------------
README-ZH.md | 44 ++++++++++++++++------------------
README.md | 44 ++++++++++++++++------------------
8 files changed, 148 insertions(+), 162 deletions(-)
rename .antigravity.md => GEMINI.md (100%)
diff --git a/.antigravity.md b/GEMINI.md
similarity index 100%
rename from .antigravity.md
rename to GEMINI.md
diff --git a/README-DE.md b/README-DE.md
index 83be42447..be6164056 100644
--- a/README-DE.md
+++ b/README-DE.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Konfiguration
-### 1. Projektkonfiguration (`.antigravity.md`)
-Erstellen Sie eine `.antigravity.md`-Datei im Stammverzeichnis Ihres Projekts, um dem KI-Agenten spezifischen Kontext und Entwicklungsregeln bereitzustellen:
+### 1. Projektkonfiguration (`GEMINI.md`)
+Erstellen Sie eine `GEMINI.md`-Datei im Stammverzeichnis Ihres Projekts, um dem KI-Agenten spezifischen Kontext und Entwicklungsregeln bereitzustellen:
```markdown
# Projektkontext
@@ -100,11 +100,11 @@ Die globale Einstellungsdatei steuert Berechtigungen zur Tool-Ausführung, Statu
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ Die globale Einstellungsdatei steuert Berechtigungen zur Tool-Ausführung, Statu
}
```
-### 3. Spezialisierte Agenten (`~/.antigravity/agents/`)
-Sie können benutzerdefinierte Rollen und Anweisungen für KI-Agenten im YAML-Format beschreiben:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Analysiert Code vor dem Commit auf Schwachstellen"
-instructions: |
- Änderungen überprüfen auf:
- - OWASP Top 10 Schwachstellen
- - Durchsickern von API-Schlüsseln oder Geheimnissen
- - Richtigkeit der Firewall-/nftables-Konfiguration
+### 3. Spezialisierte Agenten
+Sie können benutzerdefinierte Rollen und Anweisungen für KI-Agenten im JSON-Format beschreiben. Jeder Agent muss sein eigenes Verzeichnis haben, das eine `agent.json`-Datei enthält:
+
+- **Globale Agenten (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Globale Agenten (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Globale Agenten (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Lokale Agenten (Projektarbeitsbereich)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Analysiert Code vor dem Commit auf Schwachstellen",
+ "instructions": "Änderungen überprüfen auf:\n- OWASP Top 10 Schwachstellen\n- Durchsickern von API-Schlüsseln oder Geheimnissen\n- Richtigkeit der Firewall-/nftables-Konfiguration"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # Installierte Plugins auflisten
### Schritte für einen schnellen Übergang
1. Installieren Sie den neuen Client: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Benennen Sie lokale Konfigurationsdateien um:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Migrieren Sie lokale benutzerdefinierte Agentenkonfigurationsdateien (konvertieren Sie z. B. benutzerdefinierte Agenten von YAML in `~/.gemini/agents/` in JSON-Dateien unter `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Aktualisieren Sie CI/CD-Konfigurationen in GitHub Actions und ersetzen Sie `gemini`-Aufrufe durch `agy`.
4. Deinstallieren Sie die alte Bibliothek: `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # Installierte Plugins auflisten
| **Entwicklungsplattform** | Node.js / TypeScript | Go (Nativ kompilierte Binärdatei) |
| **Befehlsname** | `gemini` | `agy` |
| **Startgeschwindigkeit** | ~1.2s (Node.js-Start) | **~0.05s (sofortiger nativer Start)** |
-| **Konfigurationsdatei** | `GEMINI.md` | `.antigravity.md` |
+| **Konfigurationsdatei** | `GEMINI.md` | `GEMINI.md` |
| **Automatische Aktualisierung** | Über `npm update` | Integrierter Selbstaktualisierungsmechanismus |
| **Support-Status** | ⛔ EOL (18. Juni 2026) | ✅ Aktive Entwicklung (Upstream) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Installer für Windows PowerShell (offline/online)
├── install.cmd # Installer für Windows CMD
├── Makefile # Automatisierungsziele (make install/reinstall/uninstall)
-├── .antigravity.md # Projektkontext-Dateivorlage
+├── GEMINI.md # Projektkontext-Dateivorlage
├── packages/ # Lokaler Offline-Vertrieb
│ ├── manifests/ # Versionsmanifeste für alle Plattformen
│ └── binaries/ # (Manuell erstellt für den Offline-Modus)
diff --git a/README-ES.md b/README-ES.md
index fec44358f..b64f212d1 100644
--- a/README-ES.md
+++ b/README-ES.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Configuración
-### 1. Configuración del proyecto (`.antigravity.md`)
-Cree un archivo `.antigravity.md` en la raíz de su proyecto para proporcionar un contexto específico y reglas de desarrollo al agente de IA:
+### 1. Configuración del proyecto (`GEMINI.md`)
+Cree un archivo `GEMINI.md` en la raíz de su proyecto para proporcionar un contexto específico y reglas de desarrollo al agente de IA:
```markdown
# Contexto del proyecto
@@ -100,11 +100,11 @@ El archivo de configuración global controla los permisos de ejecución de herra
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ El archivo de configuración global controla los permisos de ejecución de herra
}
```
-### 3. Agentes especializados (`~/.antigravity/agents/`)
-Puede describir roles e instrucciones personalizados para agentes de IA en formato YAML:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Analiza el código en busca de vulnerabilidades antes de confirmar"
-instructions: |
- Buscar en los cambios:
- - Vulnerabilidades OWASP Top 10
- - Filtración de claves de API o secretos
- - Corrección de la configuración del firewall/nftables
+### 3. Agentes especializados
+Puede describir roles e instrucciones personalizados para agentes de IA en formato JSON. Cada agente debe tener su propio directorio que contenga un archivo `agent.json`:
+
+- **Agentes Globales (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agentes Globales (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agentes Globales (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Agentes Locales (Espacio de Trabajo)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Analiza el código en busca de vulnerabilidades antes de confirmar",
+ "instructions": "Buscar en los cambios:\n- Vulnerabilidades OWASP Top 10\n- Filtración de claves de API o secretos\n- Corrección de la configuración del firewall/nftables"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # Listar los complementos instalados
### Pasos para una transición rápida
1. Instale el nuevo cliente: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Cambie el nombre de los archivos de configuración locales:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Migre los archivos de configuración de agentes personalizados locales (por ejemplo, convierta agentes personalizados de YAML dentro de `~/.gemini/agents/` a archivos JSON en `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Actualice las configuraciones de CI/CD en GitHub Actions, reemplazando las llamadas a `gemini` por `agy`.
4. Desinstale la biblioteca antigua: `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # Listar los complementos instalados
| **Plataforma de desarrollo** | Node.js / TypeScript | Go (Binario compilado nativo) |
| **Nombre del comando** | `gemini` | `agy` |
| **Velocidad de inicio** | ~1.2s (inicio de Node.js) | **~0.05s (inicio nativo instantáneo)** |
-| **Archivo de configuración** | `GEMINI.md` | `.antigravity.md` |
+| **Archivo de configuración** | `GEMINI.md` | `GEMINI.md` |
| **Actualización automática** | A través de `npm update` | Mecanismo de auto-actualización incorporado |
| **Estado del soporte** | ⛔ Fin de la vida útil (18 de junio de 2026) | ✅ Desarrollo activo (Upstream) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Instalador para Windows PowerShell (fuera de línea/en línea)
├── install.cmd # Instalador para Windows CMD
├── Makefile # Destinos de automatización (make install/reinstall/uninstall)
-├── .antigravity.md # Plantilla de archivo de contexto del proyecto
+├── GEMINI.md # Plantilla de archivo de contexto del proyecto
├── packages/ # Distribución local fuera de línea
│ ├── manifests/ # Manifiestos de versión para todas las plataformas
│ └── binaries/ # (Creado manualmente para el modo fuera de línea)
diff --git a/README-FR.md b/README-FR.md
index 05c92611f..3c7548b5b 100644
--- a/README-FR.md
+++ b/README-FR.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Configuration
-### 1. Configuration du projet (`.antigravity.md`)
-Créez un fichier `.antigravity.md` à la racine de votre projet pour fournir un contexte spécifique et des règles de développement à l'agent IA :
+### 1. Configuration du projet (`GEMINI.md`)
+Créez un fichier `GEMINI.md` à la racine de votre projet pour fournir un contexte spécifique et des règles de développement à l'agent IA :
```markdown
# Contexte du projet
@@ -100,11 +100,11 @@ Le fichier de configuration globale contrôle les autorisations d'exécution des
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ Le fichier de configuration globale contrôle les autorisations d'exécution des
}
```
-### 3. Agents spécialisés (`~/.antigravity/agents/`)
-Vous pouvez décrire des rôles et des instructions personnalisés pour les agents IA au format YAML :
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Analyse le code à la recherche de vulnérabilités avant le commit"
-instructions: |
- Vérifier les modifications pour :
- - Les 10 vulnérabilités majeures de l'OWASP
- - Les fuites de clés API ou de secrets
- - L'exactitude de la configuration du pare-feu/nftables
+### 3. Agents spécialisés
+Vous pouvez décrire des rôles et des instructions personnalisés pour les agents IA au format JSON. Chaque agent doit avoir son propre répertoire contenant un fichier `agent.json` :
+
+- **Agents Globaux (Linux/Unix)** : `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agents Globaux (macOS)** : `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agents Globaux (Windows)** : `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Agents Locaux (Espace de Travail)** : `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Analyse le code à la recherche de vulnérabilités avant le commit",
+ "instructions": "Vérifier les modifications pour :\n- Les 10 vulnérabilités majeures de l'OWASP\n- Les fuites de clés API ou de secrets\n- L'exactitude de la configuration du pare-feu/nftables"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # Lister les plug-ins installés
### Étapes pour une transition rapide
1. Installez le nouveau client : `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Renommez les fichiers de configuration locaux :
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Migrez les fichiers de configuration des agents personnalisés locaux (par exemple, convertissez les agents personnalisés de YAML dans `~/.gemini/agents/` en fichiers JSON sous `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Mettez à jour les configurations CI/CD dans GitHub Actions, en remplaçant les appels `gemini` par `agy`.
4. Désinstallez l'ancienne bibliothèque : `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # Lister les plug-ins installés
| **Plateforme de développement** | Node.js / TypeScript | Go (Binaire natif compilé) |
| **Nom de la commande** | `gemini` | `agy` |
| **Vitesse de démarrage** | ~1.2s (démarrage Node.js) | **~0.05s (démarrage natif instantané)** |
-| **Fichier de configuration** | `GEMINI.md` | `.antigravity.md` |
+| **Fichier de configuration** | `GEMINI.md` | `GEMINI.md` |
| **Mise à jour automatique** | Via `npm update` | Mécanisme d'auto-mise à jour intégré |
| **Statut du support** | ⛔ EOL (18 juin 2026) | ✅ Développement actif (Upstream) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Programme d'installation pour Windows PowerShell (hors ligne/en ligne)
├── install.cmd # Programme d'installation pour Windows CMD
├── Makefile # Cibles d'automatisation (make install/reinstall/uninstall)
-├── .antigravity.md # Modèle de fichier de contexte de projet
+├── GEMINI.md # Modèle de fichier de contexte de projet
├── packages/ # Distribution hors ligne locale
│ ├── manifests/ # Manifestes de version pour toutes les plateformes
│ └── binaries/ # (Créé manuellement pour le mode hors ligne)
diff --git a/README-PT.md b/README-PT.md
index 19fba2504..12d7a231f 100644
--- a/README-PT.md
+++ b/README-PT.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Configuração
-### 1. Configuração do Projeto (`.antigravity.md`)
-Crie um arquivo `.antigravity.md` na raiz do seu projeto para fornecer contexto específico e regras de desenvolvimento ao agente de IA:
+### 1. Configuração do Projeto (`GEMINI.md`)
+Crie um arquivo `GEMINI.md` na raiz do seu projeto para fornecer contexto específico e regras de desenvolvimento ao agente de IA:
```markdown
# Contexto do Projeto
@@ -100,11 +100,11 @@ O arquivo de configuração global controla as permissões de execução de ferr
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ O arquivo de configuração global controla as permissões de execução de ferr
}
```
-### 3. Agentes Especializados (`~/.antigravity/agents/`)
-Você pode descrever funções e instruções personalizadas para agentes de IA no formato YAML:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Analisa o código em busca de vulnerabilidades antes do commit"
-instructions: |
- Verificar alterações para:
- - Vulnerabilidades OWASP Top 10
- - Vazamento de chaves de API ou segredos
- - Correção da configuração do firewall/nftables
+### 3. Agentes Especializados
+Você pode descrever funções e instruções personalizadas para agentes de IA no formato JSON. Cada agente deve ter seu próprio diretório contendo um arquivo `agent.json`:
+
+- **Agentes Globais (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agentes Globais (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Agentes Globais (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Agentes Locais (Espaço de Trabalho)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Analisa o código em busca de vulnerabilidades antes do commit",
+ "instructions": "Verificar alterações para:\n- Vulnerabilidades OWASP Top 10\n- Vazamento de chaves de API ou segredos\n- Correção da configuração do firewall/nftables"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # Listar os plugins instalados
### Passos para Transição Rápida
1. Instale o novo cliente: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Renomeie os arquivos de configuração locais:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Migre os arquivos de configuração de agentes personalizados locais (por exemplo, converta agentes personalizados de YAML dentro de `~/.gemini/agents/` em arquivos JSON em `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Atualize as configurações de CI/CD no GitHub Actions, substituindo as chamadas de `gemini` por `agy`.
4. Desinstale a biblioteca antiga: `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # Listar os plugins instalados
| **Plataforma de Desenvolvimento** | Node.js / TypeScript | Go (Binário Nativo Compilado) |
| **Nome do Comando** | `gemini` | `agy` |
| **Velocidade de Inicialização** | ~1.2s (inicialização do Node.js) | **~0.05s (inicialização nativa instantânea)** |
-| **Arquivo de Configuração** | `GEMINI.md` | `.antigravity.md` |
+| **Arquivo de Configuração** | `GEMINI.md` | `GEMINI.md` |
| **Atualização Automática** | Via `npm update` | Mecanismo de auto-atualização integrado |
| **Status do Suporte** | ⛔ Fim da vida útil (18 de junho de 2026) | ✅ Desenvolvimento Ativo (Upstream) |
@@ -200,9 +198,9 @@ antigravity-cli/
├── install.ps1 # Instalador para Windows PowerShell (offline/online)
├── install.cmd # Instalador para Windows CMD
├── Makefile # Metas de automação (make install/reinstall/uninstall)
-├── .antigravity.md # Modelo de arquivo de contexto de projeto
+├── GEMINI.md # Modelo de arquivo de contexto de projeto
├── packages/ # Distribuição offline local
-│ ├── manifests/ # Manifestos de versão para todas as plataformas
+│ ├── manifests/ # Manifestes de versão para todas as plataformas
│ └── binaries/ # (Criado manualmente para o modo offline)
└── CHANGELOG.md # Registro de alterações e lançamentos
```
diff --git a/README-UA.md b/README-UA.md
index 6285c9292..0478cc9b1 100644
--- a/README-UA.md
+++ b/README-UA.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Конфігурація
-### 1. Конфігурація проєкту (`.antigravity.md`)
-Створіть файл `.antigravity.md` у корені вашого проєкту, щоб передати ШІ-агенту специфічний контекст та правила розробки:
+### 1. Конфігурація проєкту (`GEMINI.md`)
+Створіть файл `GEMINI.md` у корені вашого проєкту, щоб передати ШІ-агенту специфічний контекст та правила розробки:
```markdown
# Контекст проєкту
@@ -100,11 +100,11 @@ install.cmd
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ install.cmd
}
```
-### 3. Спеціалізовані агенти (`~/.antigravity/agents/`)
-Ви можете описувати кастомні ролі та інструкції для ШІ-агентів у форматі YAML:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Аналізує код на вразливості перед комітом"
-instructions: |
- Перевіряй зміни на:
- - OWASP Top 10 вразливості
- - Витік API ключів чи секретів
- - Правильність налаштування firewall/nftables
+### 3. Спеціалізовані агенти
+Ви можете описувати кастомні ролі та інструкції для ШІ-агентів у форматі JSON. Кожен агент повинен мати власну директорію, яка містить файл `agent.json`:
+
+- **Глобальні агенти (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Глобальні агенти (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Глобальні агенти (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Локальні агенти (Робочий простір)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Аналізує код на вразливості перед комітом",
+ "instructions": "Перевіряти зміни на:\n- OWASP Top 10 вразливості\n- Витік API ключів чи секретів\n- Правильність налаштування firewall/nftables"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # Список встановлених пла
### Кроки для швидкого переходу
1. Встановіть новий клієнт: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Перейменуйте локальні файли конфігурації:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Мігруйте локальні файли конфігурації кастомних агентів (наприклад, конвертуйте конфігурації YAML у папці `~/.gemini/agents/` в JSON-файли за шляхом `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Оновіть CI/CD конфігурації в GitHub Actions, замінивши виклики `gemini` на `agy`.
4. Видаліть стару бібліотеку: `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # Список встановлених пла
| **Платформа розробки** | Node.js / TypeScript | Go (Native Compiled Binary) |
| **Назва команди** | `gemini` | `agy` |
| **Швидкість старту** | ~1.2 сек (запуск Node.js) | **~0.05 сек (миттєвий нативний старт)** |
-| **Файл конфігурації** | `GEMINI.md` | `.antigravity.md` |
+| **Файл конфігурації** | `GEMINI.md` | `GEMINI.md` |
| **Авто-оновлення** | Через `npm update` | Вбудований механізм self-update |
| **Статус підтримки** | ⛔ EOL (18.06.2026) | ✅ Активна розробка (Upstream) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Інсталятор для Windows PowerShell (офлайн/онлайн)
├── install.cmd # Інсталятор для Windows CMD
├── Makefile # Автоматизовані цілі (make install/reinstall/uninstall)
-├── .antigravity.md # Шаблон файлу контексту проєкту
+├── GEMINI.md # Шаблон файлу контексту проєкту
├── packages/ # Локальний офлайн-дистрибутив
│ ├── manifests/ # Маніфести версій для всіх платформ
│ └── binaries/ # (Створюється вручну для офлайн-режиму)
diff --git a/README-ZH.md b/README-ZH.md
index fe697d022..5a816eab0 100644
--- a/README-ZH.md
+++ b/README-ZH.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ 配置方式
-### 1. 项目配置 (`.antigravity.md`)
-在项目的根目录下创建一个 `.antigravity.md` 文件,为 AI 智能体提供特定的项目上下文和开发规则:
+### 1. 项目配置 (`GEMINI.md`)
+在项目的根目录下创建一个 `GEMINI.md` 文件,为 AI 智能体提供特定的项目上下文和开发规则:
```markdown
# 项目上下文
@@ -100,11 +100,11 @@ install.cmd
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ install.cmd
}
```
-### 3. 专业智能体 (`~/.antigravity/agents/`)
-您可以使用 YAML 格式定义 AI 智能体的自定义角色 and 说明:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "在提交前分析代码漏洞"
-instructions: |
- 检查更改内容:
- - OWASP Top 10 漏洞
- - API 密钥或凭证泄露
- - 防火墙/nftables 配置正确性
+### 3. 专业智能体
+您可以使用 JSON 格式定义 AI 智能体的自定义角色和说明。每个智能体必须有自己的目录,其中包含一个 `agent.json` 文件:
+
+- **全局智能体 (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **全局智能体 (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **全局智能体 (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **本地智能体 (项目工作区)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "在提交前分析代码漏洞",
+ "instructions": "检查更改内容:\n- OWASP Top 10 漏洞\n- API 密钥或凭证泄露\n- 防火墙/nftables 配置正确性"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # 列出已安装的插件
### 快速迁移步骤
1. 安装新客户端:`curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. 重命名本地配置文件:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. 迁移本地自定义智能体配置文件(例如,将 `~/.gemini/agents/` 下的 YAML 格式自定义智能体转换为 `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json` 下的 JSON 文件)。
3. 更新 GitHub Actions 中的 CI/CD 配置,将所有的 `gemini` 调用替换为 `agy`。
4. 卸载旧的依赖库:`npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # 列出已安装的插件
| **开发语言/平台** | Node.js / TypeScript | Go (原生编译的二进制文件) |
| **执行命令** | `gemini` | `agy` |
| **启动速度** | ~1.2秒 (Node.js 启动延迟) | **~0.05秒 (原生瞬间启动)** |
-| **项目配置文件** | `GEMINI.md` | `.antigravity.md` |
+| **项目配置文件** | `GEMINI.md` | `GEMINI.md` |
| **自动更新** | 通过 `npm update` | 内置的自我更新机制 |
| **维护状态** | ⛔ 已停止支持 (2026年6月18日) | ✅ 持续活跃开发 (上游支持) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Windows PowerShell 安装程序 (离线/在线)
├── install.cmd # Windows CMD 安装程序
├── Makefile # 自动化目标 (make install/reinstall/uninstall)
-├── .antigravity.md # 项目上下文模板文件
+├── GEMINI.md # 项目上下文模板文件
├── packages/ # 本地离线分发包
│ ├── manifests/ # 适用于所有平台的版本清单
│ └── binaries/ # (离线模式下需手动创建)
diff --git a/README.md b/README.md
index 520de81ee..06e5d46d6 100644
--- a/README.md
+++ b/README.md
@@ -77,8 +77,8 @@ install.cmd
## ⚙️ Configuration
-### 1. Project Configuration (`.antigravity.md`)
-Create an `.antigravity.md` file in the root of your project to provide specific context and development rules to the AI agent:
+### 1. Project Configuration (`GEMINI.md`)
+Create a `GEMINI.md` file in the root of your project to provide specific context and development rules to the AI agent:
```markdown
# Project Context
@@ -100,11 +100,11 @@ The global settings file controls tool execution permissions, statusline/title s
"toolPermission": "always-proceed",
"statusLine": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/statusline.sh"
+ "command": "/home/user/.gemini/antigravity-cli/statusline.sh"
},
"title": {
"enabled": true,
- "command": "/root/.gemini/antigravity-cli/title.sh"
+ "command": "/home/user/.gemini/antigravity-cli/title.sh"
},
"mcpServers": {
"github": {
@@ -115,18 +115,20 @@ The global settings file controls tool execution permissions, statusline/title s
}
```
-### 3. Specialized Agents (`~/.antigravity/agents/`)
-You can describe custom roles and instructions for AI agents in YAML format:
-
-```yaml
-# ~/.antigravity/agents/security-reviewer.yaml
-name: security-reviewer
-description: "Analyzes code for vulnerabilities before commit"
-instructions: |
- Check changes for:
- - OWASP Top 10 vulnerabilities
- - Leakage of API keys or secrets
- - Correctness of firewall/nftables configuration
+### 3. Specialized Agents
+You can describe custom roles and instructions for AI agents in JSON format. Each agent must have its own directory containing an `agent.json` file:
+
+- **Global Agents (Linux/Unix)**: `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`
+- **Global Agents (macOS)**: `~/Library/Application Support/antigravity-cli/agents/{agent_name}/agent.json`
+- **Global Agents (Windows)**: `%APPDATA%\antigravity-cli\agents\{agent_name}\agent.json`
+- **Local Agents (Project Workspace)**: `{workspace_root}/.agents/agents/{agent_name}/agent.json`
+
+```json
+{
+ "name": "security-reviewer",
+ "description": "Analyzes code for vulnerabilities before commit",
+ "instructions": "Check changes for:\n- OWASP Top 10 vulnerabilities\n- Leakage of API keys or secrets\n- Correctness of firewall/nftables configuration"
+}
```
---
@@ -171,11 +173,7 @@ agy plugin list # List installed plugins
### Steps for Quick Transition
1. Install the new client: `curl -fsSL https://raw.githubusercontent.com/weby-homelab/antigravity-cli/main/install.sh | bash`
-2. Rename local configuration files:
- ```bash
- mv GEMINI.md .antigravity.md
- mv ~/.gemini/agents/ ~/.antigravity/agents/
- ```
+2. Migrate local custom agent configuration files (e.g. convert custom agents from YAML inside `~/.gemini/agents/` to JSON files at `~/.gemini/antigravity-cli/agents/{agent_name}/agent.json`).
3. Update CI/CD configurations in GitHub Actions, replacing `gemini` calls with `agy`.
4. Uninstall the old library: `npm uninstall -g @google/gemini-cli`
@@ -186,7 +184,7 @@ agy plugin list # List installed plugins
| **Development Platform** | Node.js / TypeScript | Go (Native Compiled Binary) |
| **Command Name** | `gemini` | `agy` |
| **Startup Speed** | ~1.2s (Node.js startup) | **~0.05s (instant native startup)** |
-| **Configuration File** | `GEMINI.md` | `.antigravity.md` |
+| **Configuration File** | `GEMINI.md` | `GEMINI.md` |
| **Auto-update** | Via `npm update` | Built-in self-update mechanism |
| **Support Status** | ⛔ EOL (June 18, 2026) | ✅ Active Development (Upstream) |
@@ -200,7 +198,7 @@ antigravity-cli/
├── install.ps1 # Installer for Windows PowerShell (offline/online)
├── install.cmd # Installer for Windows CMD
├── Makefile # Automation targets (make install/reinstall/uninstall)
-├── .antigravity.md # Project context file template
+├── GEMINI.md # Project context file template
├── packages/ # Local offline distribution
│ ├── manifests/ # Version manifests for all platforms
│ └── binaries/ # (Created manually for offline mode)
From 1826f1e4bbef895aa5ecc828559201c8063de008 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 19:39:17 +0300
Subject: [PATCH 18/22] feat(statusline): enhance statusline with all
documented fields
---
examples/statusline/statusline.sh | 154 ++++++++++++++++++++++++------
1 file changed, 125 insertions(+), 29 deletions(-)
diff --git a/examples/statusline/statusline.sh b/examples/statusline/statusline.sh
index 390fea1ee..a97db950c 100755
--- a/examples/statusline/statusline.sh
+++ b/examples/statusline/statusline.sh
@@ -30,38 +30,95 @@ FG_BRIGHT_WHITE="\033[97m"
NUM_COLOR="${FG_BRIGHT_WHITE}${B}"
# ─── Parse JSON from stdin (Single jq pass for performance) ──────────────────
-# Extract all fields in one pass to prevent spawning jq 8 times.
{
read -r STATE
read -r USED_PCT
read -r VCS_BRANCH
read -r VCS_DIRTY
+ read -r VCS_TYPE
+ read -r VCS_CLIENT
read -r SANDBOX
+ read -r SANDBOX_NET
read -r ARTIFACTS
read -r SUBAGENTS
read -r BG_TASKS
- read -r MODEL
+ read -r MODEL_ID
+ read -r MODEL_NAME
read -r COLS
+ read -r CWD
+ read -r CONV_ID
+ read -r PRODUCT
+ read -r INPUT_TOKENS
+ read -r OUTPUT_TOKENS
+ read -r CTX_LIMIT
+ read -r CTX_USED
+ read -r REM_PCT
} <<< "$(
jq -r '
(.agent_state // "idle"),
(.context_window.used_percentage // 0),
(.vcs.branch // ""),
(.vcs.dirty // false),
+ (.vcs.type // ""),
+ (.vcs.client // ""),
(.sandbox.enabled // false),
+ (.sandbox.allow_network // false),
(.artifact_count // 0),
(if .subagents | type == "array" then (.subagents | length) else 0 end),
(.task_count // 0),
+ (.model.id // ""),
(.model.display_name // ""),
- (.terminal_width // 80)
- ' 2>/dev/null || printf "idle\n0\n\nfalse\nfalse\n0\n0\n0\n\n80\n"
+ (.terminal_width // 80),
+ (.cwd // ""),
+ (.conversation_id // ""),
+ (.product // ""),
+ (.context_window.total_input_tokens // 0),
+ (.context_window.total_output_tokens // 0),
+ (.context_window.context_window_size // 0),
+ (.context_window.current_usage // 0),
+ (.context_window.remaining_percentage // 100)
+ ' 2>/dev/null || printf "idle\n0\n\nfalse\n\n\nfalse\nfalse\n0\n0\n0\n\n\n80\n\n\n\n0\n0\n0\n0\n100\n"
)"
-# ─── Computed Values ─────────────────────────────────────────────────────────
-# Use LC_NUMERIC=C to prevent bash printf errors in locales that use commas for decimals
+# ─── Computed & Formatted Values ─────────────────────────────────────────────
PCT_FMT=$(LC_NUMERIC=C printf "%.1f" "$USED_PCT")
PCT_INT=${USED_PCT%.*}; PCT_INT=${PCT_INT:-0}
+human_format() {
+ local num=$1
+ if [ -z "$num" ] || [ "$num" -eq 0 ] 2>/dev/null; then
+ echo "0"
+ return
+ fi
+ if [ "$num" -ge 1000000 ] 2>/dev/null; then
+ echo "$((num / 1000000)).$(((num % 1000000) / 100000))M"
+ elif [ "$num" -ge 1000 ] 2>/dev/null; then
+ echo "$((num / 1000)).$(((num % 1000) / 100))K"
+ else
+ echo "$num"
+ fi
+}
+
+INPUT_TOK_FMT=$(human_format "$INPUT_TOKENS")
+OUTPUT_TOK_FMT=$(human_format "$OUTPUT_TOKENS")
+CTX_LIMIT_FMT=$(human_format "$CTX_LIMIT")
+CTX_USED_FMT=$(human_format "$CTX_USED")
+
+shorten_path() {
+ local path=$1
+ if [ -z "$path" ]; then
+ echo ""
+ return
+ fi
+ path="${path/#$HOME/\~}"
+ if [ "${#path}" -gt 25 ]; then
+ echo "...$(basename "$path")"
+ else
+ echo "$path"
+ fi
+}
+CWD_SHORT=$(shorten_path "$CWD")
+
# ─── State Indicator (No background colors) ──────────────────────────────────
case "$STATE" in
idle) S="${FG_BRIGHT_GREEN}${B}● READY${R}" ;;
@@ -71,27 +128,34 @@ case "$STATE" in
*) S="${FG_WHITE}${B}⏳ $(echo "$STATE" | tr '[:lower:]' '[:upper:]')${R}" ;;
esac
-# ─── VCS Branch ──────────────────────────────────────────────────────────────
+# ─── VCS Branch & Type ───────────────────────────────────────────────────────
V=""
if [ -n "$VCS_BRANCH" ]; then
+ VCS_LABEL="${VCS_TYPE:-git}"
if [ "$VCS_DIRTY" = "true" ]; then
- V="${FG_GRAY} ╱ ${FG_BRIGHT_RED}${VCS_BRANCH}${FG_BRIGHT_YELLOW}*${R}"
+ V="${FG_GRAY} ╱ ${FG_GRAY}${VCS_LABEL}:${FG_BRIGHT_RED}${VCS_BRANCH}${FG_BRIGHT_YELLOW}*${R}"
else
- V="${FG_GRAY} ╱ ${FG_BRIGHT_BLUE}${VCS_BRANCH}${R}"
+ V="${FG_GRAY} ╱ ${FG_GRAY}${VCS_LABEL}:${FG_BRIGHT_BLUE}${VCS_BRANCH}${R}"
fi
fi
# ─── Model ───────────────────────────────────────────────────────────────────
+# Fallback to model ID if display name is empty
+MODEL_DISP="${MODEL_NAME:-$MODEL_ID}"
M=""
-if [ -n "$MODEL" ]; then
- M="${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${I}${MODEL}${R}"
+if [ -n "$MODEL_DISP" ]; then
+ M="${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${I}${MODEL_DISP}${R}"
fi
# ─── Sandbox Badge ───────────────────────────────────────────────────────────
if [ "$SANDBOX" = "true" ]; then
- SB="${FG_GRAY}sandbox ${FG_BRIGHT_GREEN}${B}ON${R}"
+ if [ "$SANDBOX_NET" = "true" ]; then
+ SB="${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (net)${R}"
+ else
+ SB="${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (no-net)${R}"
+ fi
else
- SB="${FG_GRAY}sandbox off${R}"
+ SB="${FG_GRAY}🛡️ sandbox off${R}"
fi
# ─── Context Bar (15 segments, fine-grain Unicode) ────────────────────────────
@@ -99,7 +163,6 @@ BAR_LEN=15
FILLED=$((PCT_INT * BAR_LEN / 100))
REMAINDER=$(( (PCT_INT * BAR_LEN) % 100 ))
-# Pick color based on percentage
if [ "$PCT_INT" -ge 90 ]; then
BAR_COLOR="$FG_BRIGHT_RED"
elif [ "$PCT_INT" -ge 60 ]; then
@@ -108,7 +171,6 @@ else
BAR_COLOR="$FG_BRIGHT_WHITE"
fi
-# Build bar with partial-fill last block
BAR=""
for ((i = 0; i < BAR_LEN; i++)); do
if [ "$i" -lt "$FILLED" ]; then
@@ -128,28 +190,62 @@ for ((i = 0; i < BAR_LEN; i++)); do
fi
done
-# ─── Stats ───────────────────────────────────────────────────────────────────
-CTX="${FG_GRAY}ctx ${BAR_COLOR}${BAR} ${NUM_COLOR}${PCT_FMT}%${R}"
-ART_FMT="${FG_GRAY}artifacts ${NUM_COLOR}${ARTIFACTS}${R}"
-SUB_FMT="${FG_GRAY}subagents ${NUM_COLOR}${SUBAGENTS}${R}"
-BG_FMT="${FG_GRAY}tasks ${NUM_COLOR}${BG_TASKS}${R}"
+# ─── Stats & Metadata formatting ─────────────────────────────────────────────
+CTX_BAR="${FG_GRAY}ctx ${BAR_COLOR}${BAR} ${NUM_COLOR}${PCT_FMT}%${R}"
+ART_FMT="${FG_GRAY}📦 ${NUM_COLOR}${ARTIFACTS}${R}"
+SUB_FMT="${FG_GRAY}🤖 ${NUM_COLOR}${SUBAGENTS}${R}"
+BG_FMT="${FG_GRAY}⏳ ${NUM_COLOR}${BG_TASKS}${R}"
+
+# ─── New elements (CWD, Conversation ID, Token counts) ──────────────────────
+DIR_FMT=""
+if [ -n "$CWD_SHORT" ]; then
+ DIR_FMT="${FG_GRAY} ╱ 📂 ${CWD_SHORT}${R}"
+fi
+
+CONV_FMT=""
+if [ -n "$CONV_ID" ]; then
+ CONV_FMT="${FG_GRAY} ╱ id:${CONV_ID:0:8}${R}"
+fi
+
+# Token stats detailed vs simple
+TOK_DETAILS=""
+if [ "$CTX_USED" -gt 0 ] 2>/dev/null; then
+ TOK_DETAILS=" (${CTX_USED_FMT}/${CTX_LIMIT_FMT})"
+fi
# ─── Separators ──────────────────────────────────────────────────────────────
DOT="${FG_GRAY} · ${R}"
-# ─── Output ──────────────────────────────────────────────────────────────────
-LINE1="${S}${M}${V}"
-LINE2=" ${CTX}${DOT}${ART_FMT}${DOT}${SUB_FMT}${DOT}${BG_FMT}${DOT}${SB}"
-
+# ─── Output Assembly ──────────────────────────────────────────────────────────
if [ "$COLS" -ge 120 ]; then
- # Wide: single line
+ # Wide Layout: One line containing state, model, vcs, directory, conversation id
+ # and bottom bar metrics inline.
+ LINE1="${S}${M}${V}${DIR_FMT}${CONV_FMT}"
+
+ # Detailed tokens in wide layout: (used/limit · in/out)
+ if [ "$CTX_USED" -gt 0 ] 2>/dev/null; then
+ TOK_DETAILS=" (${CTX_USED_FMT}/${CTX_LIMIT_FMT} · ${INPUT_TOK_FMT} in/${OUTPUT_TOK_FMT} out)"
+ fi
+
+ LINE2=" ${CTX_BAR}${TOK_DETAILS}${DOT}${ART_FMT}${DOT}${SUB_FMT}${DOT}${BG_FMT}${DOT}${SB}"
echo -e "${LINE1}${FG_GRAY} │ ${R}${LINE2}"
+
elif [ "$COLS" -ge 80 ]; then
- # Medium: two-line layout with border
+ # Medium Layout: Two-line layout with border
+ LINE1="${S}${M}${V}${DIR_FMT}"
+ LINE2=" ${CTX_BAR}${TOK_DETAILS}${DOT}${ART_FMT}${DOT}${SUB_FMT}${DOT}${BG_FMT}${DOT}${SB}"
+
echo -e "${FG_GRAY}╭─${R} ${LINE1}"
echo -e "${FG_GRAY}╰─${R}${LINE2}"
+
else
- # Narrow: compact two-line, minimal chrome
- echo -e "${S}${M}"
- echo -e "${CTX}${DOT}${BG_FMT}"
+ # Narrow Layout: Compact two-line, minimal layout
+ # Shorten model display for narrow screens
+ M_SHORT=""
+ if [ -n "$MODEL_DISP" ]; then
+ M_SHORT="${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${MODEL_DISP:0:12}${R}"
+ fi
+
+ echo -e "${S}${M_SHORT}"
+ echo -e "${CTX_BAR}${DOT}${BG_FMT}"
fi
From d41671a4b8b8569899a96732b4989366e182cb44 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 22:33:44 +0300
Subject: [PATCH 19/22] fix(statusline): sum total input and output tokens
instead of parsing current_usage object directly
---
examples/statusline/statusline.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/examples/statusline/statusline.sh b/examples/statusline/statusline.sh
index a97db950c..893b38fa7 100755
--- a/examples/statusline/statusline.sh
+++ b/examples/statusline/statusline.sh
@@ -1,5 +1,7 @@
#!/bin/bash
set -euo pipefail
+INPUT_JSON=$(cat)
+
# ─── ANSI Helpers (Standard 16-color palette only) ───────────────────────────
R="\033[0m" # Reset
@@ -54,7 +56,7 @@ NUM_COLOR="${FG_BRIGHT_WHITE}${B}"
read -r CTX_USED
read -r REM_PCT
} <<< "$(
- jq -r '
+ echo "$INPUT_JSON" | jq -r '
(.agent_state // "idle"),
(.context_window.used_percentage // 0),
(.vcs.branch // ""),
@@ -75,7 +77,7 @@ NUM_COLOR="${FG_BRIGHT_WHITE}${B}"
(.context_window.total_input_tokens // 0),
(.context_window.total_output_tokens // 0),
(.context_window.context_window_size // 0),
- (.context_window.current_usage // 0),
+ ((.context_window.total_input_tokens // 0) + (.context_window.total_output_tokens // 0)),
(.context_window.remaining_percentage // 100)
' 2>/dev/null || printf "idle\n0\n\nfalse\n\n\nfalse\nfalse\n0\n0\n0\n\n\n80\n\n\n\n0\n0\n0\n0\n100\n"
)"
From c8e2fcc092727d60adaeddb3f36356da7f3a5548 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 28 May 2026 22:47:05 +0300
Subject: [PATCH 20/22] feat(examples): add automated setup scripts and fix
token displays in all statusline implementations
---
examples/statusline/README.md | 126 ++++++++++++++--
examples/statusline/setup.sh | 98 ++++++++++++
examples/statusline/statusline.fish | 225 ++++++++++++++++++++++++++++
examples/statusline/statusline.js | 220 +++++++++++++++++++++++++++
examples/statusline/statusline.ps1 | 223 +++++++++++++++++++++++++++
examples/title/README.md | 94 +++++++++++-
examples/title/setup.sh | 98 ++++++++++++
examples/title/title.fish | 37 +++++
examples/title/title.js | 53 +++++++
examples/title/title.ps1 | 39 +++++
10 files changed, 1196 insertions(+), 17 deletions(-)
create mode 100644 examples/statusline/setup.sh
create mode 100755 examples/statusline/statusline.fish
create mode 100755 examples/statusline/statusline.js
create mode 100644 examples/statusline/statusline.ps1
create mode 100644 examples/title/setup.sh
create mode 100755 examples/title/title.fish
create mode 100755 examples/title/title.js
create mode 100644 examples/title/title.ps1
diff --git a/examples/statusline/README.md b/examples/statusline/README.md
index 923d66d2d..6b3a6ed88 100644
--- a/examples/statusline/README.md
+++ b/examples/statusline/README.md
@@ -1,21 +1,117 @@
-# CLI Statusline Example
+# Custom Status Line
-This directory contains an example script (`statusline.sh`) that demonstrates how to create a custom, dynamic statusline for the Antigravity CLI.
+This directory contains reference implementations for a custom, dynamic status line for the Antigravity CLI across different shell environments:
-For more details on how to use and configure the statusline script, please refer to the official public documentation:
-[https://antigravity.google/docs/cli-statusline](https://antigravity.google/docs/cli-statusline)
+1. **`statusline.sh`** (Bash/Zsh - Linux/macOS)
+2. **`statusline.js`** (Node.js - Cross-platform: Windows/Linux/macOS)
+3. **`statusline.ps1`** (PowerShell - Windows PowerShell or PowerShell Core `pwsh`)
+4. **`statusline.fish`** (Fish shell - Linux/macOS)
+
+## Quick Start
+
+### Option 1: Automatic Setup (Recommended for Bash/Zsh)
+
+Run the included setup script from the root of the repository:
+
+```bash
+bash examples/statusline/setup.sh
+```
+
+This script will automatically:
+1. Copy `statusline.sh` to your platform's global settings directory (so it stays configured even if you move or delete this repository).
+2. Configure and enable it in your global `settings.json` file.
+
+### Option 2: Manual configuration
+
+1. Copy the script corresponding to your shell to a directory of your choice.
+2. Edit your `settings.json` file to point `statusLine.command` to the absolute path of the script and set `statusLine.enabled` to `true`:
+
+#### Bash/Zsh (Linux/macOS)
+```json
+{
+ "statusLine": {
+ "command": "/absolute/path/to/statusline.sh",
+ "enabled": true
+ }
+}
+```
+
+#### Node.js (Cross-platform)
+```json
+{
+ "statusLine": {
+ "command": "node /absolute/path/to/statusline.js",
+ "enabled": true
+ }
+}
+```
+
+#### PowerShell (Windows / pwsh)
+```json
+{
+ "statusLine": {
+ "command": "powershell.exe -ExecutionPolicy Bypass -File C:\\absolute\\path\\to\\statusline.ps1",
+ "enabled": true
+ }
+}
+```
+*For PowerShell Core, use `pwsh.exe` or `pwsh` instead of `powershell.exe`.*
+
+#### Fish Shell
+```json
+{
+ "statusLine": {
+ "command": "/absolute/path/to/statusline.fish",
+ "enabled": true
+ }
+}
+```
+
+**Settings file locations:**
+
+| Platform | Path |
+| :--- | :--- |
+| Linux | `~/.gemini/antigravity-cli/settings.json` |
+| macOS | `~/Library/Application Support/antigravity-cli/settings.json` |
+| Windows | `%APPDATA%\antigravity-cli\settings.json` |
+
+> [!IMPORTANT]
+> The `command` field must be an **absolute path** to the script. Relative paths and `~` expansion are not supported.
+
+After saving, restart `agy` for changes to take effect.
## How it works
-The `statusline.sh` script reads a JSON payload from standard input, containing various state information from the CLI. It then:
-1. Extracts multiple fields like `agent_state`, `vcs` info, context usage, and terminal dimensions using `jq`.
-2. Computes visual indicators, such as a Unicode progress bar for context window usage.
-3. Formats the data with standard ANSI 16-color codes for visual distinction.
-4. Dynamically adjusts the layout to be 1 or 2 lines based on the available terminal width.
+The CLI pipes a JSON payload into the script's stdin on each state change. The script:
+
+1. Extracts fields like `agent_state`, `vcs` info, `context_window` usage, and `terminal_width`.
+2. Computes visual indicators (e.g., a Unicode progress bar for context window usage).
+3. Formats the output using standard ANSI 16-color codes.
+4. Dynamically adjusts the layout based on the available terminal width (single-line for wide terminals, two-line for narrower ones).
+
+### JSON payload fields
+
+| Field | Type | Description |
+| :--- | :--- | :--- |
+| `agent_state` | string | Current state: `idle`, `thinking`, `working`, `tool_use` |
+| `context_window.used_percentage` | number | Context window utilization (0–100) |
+| `vcs.branch` | string | Current Git branch name |
+| `vcs.dirty` | boolean | Whether the working tree has uncommitted changes |
+| `sandbox.enabled` | boolean | Whether sandbox mode is active |
+| `artifact_count` | number | Number of artifacts in the current session |
+| `subagents` | array | List of active subagents |
+| `task_count` | number | Number of background tasks |
+| `model.display_name` | string | Human-readable model name |
+| `terminal_width` | number | Current terminal width in columns |
+
+### Prerequisites
+
+- **Bash (`statusline.sh`) & Fish (`statusline.fish`)**: Require [`jq`](https://jqlang.org/) to be installed and available in `$PATH`.
+- **Node.js (`statusline.js`) & PowerShell (`statusline.ps1`)**: Have **zero external dependencies** and work out-of-the-box.
## Examples
-### Default Statusline
+### Default Status Line

### Review Mode
@@ -23,3 +119,13 @@ The `statusline.sh` script reads a JSON payload from standard input, containing
### Tool Execution

+
+## Writing your own
+
+You can use any of the provided scripts as a starting point. The only contract is:
+
+1. Read JSON from stdin.
+2. Write one or more lines of ANSI-formatted text to stdout.
+3. Exit with code 0.
+
+For the official documentation, see [antigravity.google/docs/cli-statusline](https://antigravity.google/docs/cli-statusline).
diff --git a/examples/statusline/setup.sh b/examples/statusline/setup.sh
new file mode 100644
index 000000000..584c78044
--- /dev/null
+++ b/examples/statusline/setup.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# setup.sh - Installs and enables the custom statusline for Antigravity CLI
+
+set -euo pipefail
+
+# 1. Determine the settings directory
+OS="$(uname -s)"
+case "${OS}" in
+ Darwin*)
+ CONFIG_DIR="$HOME/Library/Application Support/antigravity-cli"
+ ;;
+ Linux*)
+ CONFIG_DIR="$HOME/.gemini/antigravity-cli"
+ ;;
+ CYGWIN*|MINGW*|MSYS*)
+ # Windows environments (Git Bash, MSYS)
+ if [ -n "${APPDATA:-}" ]; then
+ CONFIG_DIR="${APPDATA}/antigravity-cli"
+ else
+ CONFIG_DIR="$HOME/AppData/Roaming/antigravity-cli"
+ fi
+ ;;
+ *)
+ # Default fallback to Linux path
+ CONFIG_DIR="$HOME/.gemini/antigravity-cli"
+ ;;
+esac
+
+# Convert config dir to absolute path if needed
+mkdir -p "$CONFIG_DIR"
+CONFIG_DIR="$(cd "$CONFIG_DIR" && pwd)"
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+SOURCE_SCRIPT="$SCRIPT_DIR/statusline.sh"
+TARGET_SCRIPT="$CONFIG_DIR/statusline.sh"
+
+echo "Installing statusline script to: $TARGET_SCRIPT"
+cp "$SOURCE_SCRIPT" "$TARGET_SCRIPT"
+chmod +x "$TARGET_SCRIPT"
+
+SETTINGS_FILE="$CONFIG_DIR/settings.json"
+echo "Configuring settings file at: $SETTINGS_FILE"
+
+# Make sure settings.json exists
+if [ ! -f "$SETTINGS_FILE" ]; then
+ echo "{}" > "$SETTINGS_FILE"
+fi
+
+# Update settings.json using python if available, otherwise fallback to jq
+if command -v python3 >/dev/null 2>&1; then
+ python3 -c '
+import json, sys
+file_path, script_path = sys.argv[1], sys.argv[2]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+if "statusLine" not in data or not isinstance(data["statusLine"], dict):
+ data["statusLine"] = {}
+data["statusLine"]["command"] = script_path
+data["statusLine"]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$TARGET_SCRIPT"
+elif command -v python >/dev/null 2>&1; then
+ python -c '
+import json, sys
+file_path, script_path = sys.argv[1], sys.argv[2]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+if "statusLine" not in data or not isinstance(data["statusLine"], dict):
+ data["statusLine"] = {}
+data["statusLine"]["command"] = script_path
+data["statusLine"]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$TARGET_SCRIPT"
+elif command -v jq >/dev/null 2>&1; then
+ TEMP_FILE=$(mktemp)
+ jq --arg cmd "$TARGET_SCRIPT" '.statusLine = ((.statusLine // {}) + {command: $cmd, enabled: true})' "$SETTINGS_FILE" > "$TEMP_FILE"
+ mv "$TEMP_FILE" "$SETTINGS_FILE"
+else
+ echo "Error: Neither python3, python, nor jq is installed. Please manually add the following to your $SETTINGS_FILE:"
+ echo "{"
+ echo " \"statusLine\": {"
+ echo " \"command\": \"$TARGET_SCRIPT\","
+ echo " \"enabled\": true"
+ echo " }"
+ echo "}"
+ exit 1
+fi
+
+echo "Status line successfully installed and enabled!"
+echo "Please restart Antigravity CLI (agy) to see the changes."
diff --git a/examples/statusline/statusline.fish b/examples/statusline/statusline.fish
new file mode 100755
index 000000000..fae25d7d5
--- /dev/null
+++ b/examples/statusline/statusline.fish
@@ -0,0 +1,225 @@
+#!/usr/bin/fish
+
+# Read JSON payload from stdin
+set -l DATA (cat)
+
+# Extract fields using jq. Since Fish is on Unix, jq will be available.
+if not type -q jq
+ echo "READY"
+ echo "ctx · 0%"
+ exit 0
+end
+
+set -l STATE (echo $DATA | jq -r '.agent_state // "idle"')
+set -l USED_PCT (echo $DATA | jq -r '.context_window.used_percentage // 0')
+set -l VCS_BRANCH (echo $DATA | jq -r '.vcs.branch // ""')
+set -l VCS_DIRTY (echo $DATA | jq -r '.vcs.dirty // false')
+set -l VCS_TYPE (echo $DATA | jq -r '.vcs.type // ""')
+set -l SANDBOX (echo $DATA | jq -r '.sandbox.enabled // false')
+set -l SANDBOX_NET (echo $DATA | jq -r '.sandbox.allow_network // false')
+set -l ARTIFACTS (echo $DATA | jq -r '.artifact_count // 0')
+set -l SUBAGENTS (echo $DATA | jq -r 'if .subagents | type == "array" then (.subagents | length) else 0 end')
+set -l BG_TASKS (echo $DATA | jq -r '.task_count // 0')
+set -l MODEL_ID (echo $DATA | jq -r '.model.id // ""')
+set -l MODEL_NAME (echo $DATA | jq -r '.model.display_name // ""')
+set -l COLS (echo $DATA | jq -r '.terminal_width // 80')
+set -l CWD (echo $DATA | jq -r '.cwd // ""')
+set -l CONV_ID (echo $DATA | jq -r '.conversation_id // ""')
+set -l INPUT_TOKENS (echo $DATA | jq -r '.context_window.total_input_tokens // 0')
+set -l OUTPUT_TOKENS (echo $DATA | jq -r '.context_window.total_output_tokens // 0')
+set -l CTX_LIMIT (echo $DATA | jq -r '.context_window.context_window_size // 0')
+set -l CTX_USED (echo $DATA | jq -r '(.context_window.total_input_tokens // 0) + (.context_window.total_output_tokens // 0)')
+
+# ANSI Helpers
+set -l R (set_color normal)
+set -l B (set_color -o)
+set -l I (set_color -i)
+
+set -l FG_RED (set_color red)
+set -l FG_GREEN (set_color green)
+set -l FG_YELLOW (set_color yellow)
+set -l FG_BLUE (set_color blue)
+set -l FG_MAGENTA (set_color magenta)
+set -l FG_CYAN (set_color cyan)
+set -l FG_WHITE (set_color white)
+set -l FG_GRAY (set_color 909090)
+
+set -l FG_BRIGHT_RED (set_color brred)
+set -l FG_BRIGHT_GREEN (set_color brgreen)
+set -l FG_BRIGHT_YELLOW (set_color bryellow)
+set -l FG_BRIGHT_BLUE (set_color brblue)
+set -l FG_BRIGHT_MAGENTA (set_color brmagenta)
+set -l FG_BRIGHT_CYAN (set_color brcyan)
+set -l FG_BRIGHT_WHITE (set_color brwhite)
+
+set -l NUM_COLOR "$FG_BRIGHT_WHITE$B"
+
+function human_format -a num
+ if test -z "$num"; or test "$num" -eq 0
+ echo "0"
+ return
+ end
+ if test "$num" -ge 1000000
+ set -l main (math -s0 "$num / 1000000")
+ set -l dec (math -s0 "($num % 1000000) / 100000")
+ echo "$main.$dec"M
+ elif test "$num" -ge 1000
+ set -l main (math -s0 "$num / 1000")
+ set -l dec (math -s0 "($num % 1000) / 100")
+ echo "$main.$dec"K
+ else
+ echo "$num"
+ end
+end
+
+set -l INPUT_TOK_FMT (human_format $INPUT_TOKENS)
+set -l OUTPUT_TOK_FMT (human_format $OUTPUT_TOKENS)
+set -l CTX_LIMIT_FMT (human_format $CTX_LIMIT)
+set -l CTX_USED_FMT (human_format $CTX_USED)
+
+function shorten_path -a path
+ if test -z "$path"
+ echo ""
+ return
+ end
+ set -l shortened (string replace -r "^$HOME" "~" $path)
+ if test (string length $shortened) -gt 25
+ set -l base_name (basename $shortened)
+ echo "...$base_name"
+ else
+ echo $shortened
+ end
+end
+set -l CWD_SHORT (shorten_path $CWD)
+
+# State Indicator
+set -l S ""
+switch $STATE
+ case idle
+ set S "$FG_BRIGHT_GREEN$B● READY$R"
+ case thinking
+ set S "$FG_BRIGHT_YELLOW$B◆ THINKING$R"
+ case working
+ set S "$FG_BRIGHT_CYAN$B⚙ WORKING$R"
+ case tool_use
+ set S "$FG_BRIGHT_MAGENTA$B🔧 TOOL$R"
+ case '*'
+ set -l upper_state (string upper $STATE)
+ set S "$FG_WHITE$B⏳ $upper_state$R"
+end
+
+# VCS Branch & Type
+set -l V ""
+if test -n "$VCS_BRANCH"
+ set -l vcs_label "git"
+ if test -n "$VCS_TYPE"
+ set vcs_label $VCS_TYPE
+ end
+ if test "$VCS_DIRTY" = "true"
+ set V "$FG_GRAY ╱ $FG_GRAY$vcs_label:$FG_BRIGHT_RED$VCS_BRANCH$FG_BRIGHT_YELLOW*$R"
+ else
+ set V "$FG_GRAY ╱ $FG_GRAY$vcs_label:$FG_BRIGHT_BLUE$VCS_BRANCH$R"
+ end
+end
+
+# Model
+set -l MODEL_DISP $MODEL_NAME
+if test -z "$MODEL_DISP"
+ set MODEL_DISP $MODEL_ID
+end
+set -l M ""
+if test -n "$MODEL_DISP"
+ set M "$FG_GRAY ╱ $FG_BRIGHT_MAGENTA$I$MODEL_DISP$R"
+end
+
+# Sandbox Badge
+set -l SB ""
+if test "$SANDBOX" = "true"
+ if test "$SANDBOX_NET" = "true"
+ set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B"ON (net)"$R"
+ else
+ set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B"ON (no-net)"$R"
+ end
+else
+ set SB "$FG_GRAY🛡️ sandbox off$R"
+end
+
+# Context Bar
+set -l BAR_LEN 15
+set -l PCT_INT (math -s0 "$USED_PCT")
+set -l FILLED (math -s0 "$PCT_INT * $BAR_LEN / 100")
+set -l REMAINDER (math -s0 "($PCT_INT * $BAR_LEN) % 100")
+
+set -l BAR_COLOR $FG_BRIGHT_WHITE
+if test "$PCT_INT" -ge 90
+ set BAR_COLOR $FG_BRIGHT_RED
+elif test "$PCT_INT" -ge 60
+ set BAR_COLOR $FG_BRIGHT_YELLOW
+end
+
+set -l BAR ""
+for i in (seq 0 (math "$BAR_LEN - 1"))
+ if test "$i" -lt "$FILLED"
+ set BAR "$BAR"█
+ elif test "$i" -eq "$FILLED"
+ if test "$REMAINDER" -ge 75
+ set BAR "$BAR"▓
+ elif test "$REMAINDER" -ge 50
+ set BAR "$BAR"▒
+ elif test "$REMAINDER" -ge 25
+ set BAR "$BAR"░
+ else
+ set BAR "$BAR"·
+ end
+ else
+ set BAR "$BAR"·
+ end
+end
+
+# Stats & Metadata
+set -l PCT_FMT (printf "%.1f" $USED_PCT)
+set -l CTX_BAR "$FG_GRAY"ctx "$BAR_COLOR$BAR $NUM_COLOR$PCT_FMT%$R"
+set -l ART_FMT "$FG_GRAY"📦 "$NUM_COLOR$ARTIFACTS$R"
+set -l SUB_FMT "$FG_GRAY"🤖 "$NUM_COLOR$SUBAGENTS$R"
+set -l BG_FMT "$FG_GRAY"⏳ "$NUM_COLOR$BG_TASKS$R"
+
+set -l DIR_FMT ""
+if test -n "$CWD_SHORT"
+ set DIR_FMT "$FG_GRAY ╱ 📂 $CWD_SHORT$R"
+end
+
+set -l CONV_FMT ""
+if test -n "$CONV_ID"
+ set -l sub_conv (string sub -l 8 $CONV_ID)
+ set CONV_FMT "$FG_GRAY ╱ id:$sub_conv$R"
+end
+
+set -l TOK_DETAILS ""
+if test "$CTX_USED" -gt 0
+ set TOK_DETAILS " ($CTX_USED_FMT/$CTX_LIMIT_FMT)"
+end
+
+set -l DOT "$FG_GRAY · $R"
+
+# Output Assembly
+if test "$COLS" -ge 120
+ set -l line1 "$S$M$V$DIR_FMT$CONV_FMT"
+ if test "$CTX_USED" -gt 0
+ set TOK_DETAILS " ($CTX_USED_FMT/$CTX_LIMIT_FMT · $INPUT_TOK_FMT in/$OUTPUT_TOK_FMT out)"
+ end
+ set -l line2 " $CTX_BAR$TOK_DETAILS$DOT$ART_FMT$DOT$SUB_FMT$DOT$BG_FMT$DOT$SB"
+ echo -e "$line1$FG_GRAY │ $R$line2"
+elif test "$COLS" -ge 80
+ set -l line1 "$S$M$V$DIR_FMT"
+ set -l line2 " $CTX_BAR$TOK_DETAILS$DOT$ART_FMT$DOT$SUB_FMT$DOT$BG_FMT$DOT$SB"
+ echo -e "$FG_GRAY╭─$R $line1"
+ echo -e "$FG_GRAY╰─$R$line2"
+else
+ set -l M_SHORT ""
+ if test -n "$MODEL_DISP"
+ set -l sub_model (string sub -l 12 $MODEL_DISP)
+ set M_SHORT "$FG_GRAY ╱ $FG_BRIGHT_MAGENTA$sub_model$R"
+ end
+ echo -e "$S$M_SHORT"
+ echo -e "$CTX_BAR$DOT$BG_FMT"
+end
diff --git a/examples/statusline/statusline.js b/examples/statusline/statusline.js
new file mode 100755
index 000000000..a8fcc8142
--- /dev/null
+++ b/examples/statusline/statusline.js
@@ -0,0 +1,220 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+const os = require('os');
+
+// ─── Read JSON from stdin ────────────────────────────────────────────────────
+let rawData = '';
+try {
+ rawData = fs.readFileSync(0, 'utf-8');
+} catch (e) {
+ // Silence read errors
+}
+
+let data = {};
+try {
+ data = JSON.parse(rawData || '{}');
+} catch (e) {
+ // Silence JSON parse errors
+}
+
+// ─── ANSI Helpers (Standard 16-color palette only) ───────────────────────────
+const R = "\x1b[0m"; // Reset
+const B = "\x1b[1m"; // Bold
+const D = "\x1b[2m"; // Dim
+const I = "\x1b[3m"; // Italic
+
+// Foreground accents (Standard 16 colors)
+const FG_BLACK = "\x1b[30m";
+const FG_RED = "\x1b[31m";
+const FG_GREEN = "\x1b[32m";
+const FG_YELLOW = "\x1b[33m";
+const FG_BLUE = "\x1b[34m";
+const FG_MAGENTA = "\x1b[35m";
+const FG_CYAN = "\x1b[36m";
+const FG_WHITE = "\x1b[37m";
+
+const FG_GRAY = "\x1b[90m";
+const FG_BRIGHT_RED = "\x1b[91m";
+const FG_BRIGHT_GREEN = "\x1b[92m";
+const FG_BRIGHT_YELLOW = "\x1b[93m";
+const FG_BRIGHT_BLUE = "\x1b[94m";
+const FG_BRIGHT_MAGENTA = "\x1b[95m";
+const FG_BRIGHT_CYAN = "\x1b[96m";
+const FG_BRIGHT_WHITE = "\x1b[97m";
+
+const NUM_COLOR = FG_BRIGHT_WHITE + B;
+
+// ─── Extract fields with fallbacks ───────────────────────────────────────────
+const state = data.agent_state || "idle";
+const usedPct = (data.context_window && typeof data.context_window.used_percentage === 'number') ? data.context_window.used_percentage : 0;
+const vcsBranch = (data.vcs && data.vcs.branch) ? data.vcs.branch : "";
+const vcsDirty = (data.vcs && data.vcs.dirty) ? data.vcs.dirty : false;
+const vcsType = (data.vcs && data.vcs.type) ? data.vcs.type : "";
+const sandboxEnabled = (data.sandbox && data.sandbox.enabled) ? data.sandbox.enabled : false;
+const sandboxNet = (data.sandbox && data.sandbox.allow_network) ? data.sandbox.allow_network : false;
+const artifactCount = data.artifact_count || 0;
+const subagentsCount = Array.isArray(data.subagents) ? data.subagents.length : 0;
+const taskCount = data.task_count || 0;
+const modelId = (data.model && data.model.id) ? data.model.id : "";
+const modelName = (data.model && data.model.display_name) ? data.model.display_name : "";
+const cols = data.terminal_width || 80;
+const cwd = data.cwd || "";
+const convId = data.conversation_id || "";
+const inputTokens = (data.context_window && data.context_window.total_input_tokens) ? data.context_window.total_input_tokens : 0;
+const outputTokens = (data.context_window && data.context_window.total_output_tokens) ? data.context_window.total_output_tokens : 0;
+const ctxLimit = (data.context_window && data.context_window.context_window_size) ? data.context_window.context_window_size : 0;
+const ctxUsed = inputTokens + outputTokens;
+
+// ─── Helper Formatting Functions ─────────────────────────────────────────────
+function humanFormat(num) {
+ if (!num || isNaN(num) || num === 0) return "0";
+ if (num >= 1000000) {
+ return (num / 1000000).toFixed(1).replace(/\.0$/, '') + "M";
+ }
+ if (num >= 1000) {
+ return (num / 1000).toFixed(1).replace(/\.0$/, '') + "K";
+ }
+ return num.toString();
+}
+
+function shortenPath(p) {
+ if (!p) return "";
+ const home = os.homedir();
+ if (p.startsWith(home)) {
+ p = "~" + p.slice(home.length);
+ }
+ if (p.length > 25) {
+ return "..." + path.basename(p);
+ }
+ return p;
+}
+
+const cwdShort = shortenPath(cwd);
+
+// ─── State Indicator (No background colors) ──────────────────────────────────
+let S = "";
+switch (state) {
+ case 'idle':
+ S = `${FG_BRIGHT_GREEN}${B}● READY${R}`;
+ break;
+ case 'thinking':
+ S = `${FG_BRIGHT_YELLOW}${B}◆ THINKING${R}`;
+ break;
+ case 'working':
+ S = `${FG_BRIGHT_CYAN}${B}⚙ WORKING${R}`;
+ break;
+ case 'tool_use':
+ S = `${FG_BRIGHT_MAGENTA}${B}🔧 TOOL${R}`;
+ break;
+ default:
+ S = `${FG_WHITE}${B}⏳ ${state.toUpperCase()}${R}`;
+}
+
+// ─── VCS Branch & Type ───────────────────────────────────────────────────────
+let V = "";
+if (vcsBranch) {
+ const vcsLabel = vcsType || "git";
+ if (vcsDirty || vcsDirty === "true") {
+ V = `${FG_GRAY} ╱ ${FG_GRAY}${vcsLabel}:${FG_BRIGHT_RED}${vcsBranch}${FG_BRIGHT_YELLOW}*${R}`;
+ } else {
+ V = `${FG_GRAY} ╱ ${FG_GRAY}${vcsLabel}:${FG_BRIGHT_BLUE}${vcsBranch}${R}`;
+ }
+}
+
+// ─── Model ───────────────────────────────────────────────────────────────────
+const modelDisp = modelName || modelId;
+let M = "";
+if (modelDisp) {
+ M = `${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${I}${modelDisp}${R}`;
+}
+
+// ─── Sandbox Badge ───────────────────────────────────────────────────────────
+let SB = "";
+if (sandboxEnabled || sandboxEnabled === "true") {
+ if (sandboxNet || sandboxNet === "true") {
+ SB = `${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (net)${R}`;
+ } else {
+ SB = `${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (no-net)${R}`;
+ }
+} else {
+ SB = `${FG_GRAY}🛡️ sandbox off${R}`;
+}
+
+// ─── Context Bar (15 segments, fine-grain Unicode) ────────────────────────────
+const barLen = 15;
+const pctInt = Math.floor(usedPct);
+const filled = Math.floor((pctInt * barLen) / 100);
+const remainder = (pctInt * barLen) % 100;
+
+let barColor = FG_BRIGHT_WHITE;
+if (pctInt >= 90) {
+ barColor = FG_BRIGHT_RED;
+} else if (pctInt >= 60) {
+ barColor = FG_BRIGHT_YELLOW;
+}
+
+let bar = "";
+for (let i = 0; i < barLen; i++) {
+ if (i < filled) {
+ bar += "█";
+ } else if (i === filled) {
+ if (remainder >= 75) {
+ bar += "▓";
+ } else if (remainder >= 50) {
+ bar += "▒";
+ } else if (remainder >= 25) {
+ bar += "░";
+ } else {
+ bar += "·";
+ }
+ } else {
+ bar += "·";
+ }
+}
+
+// ─── Stats & Metadata formatting ─────────────────────────────────────────────
+const pctFmt = usedPct.toFixed(1);
+const ctxBar = `${FG_GRAY}ctx ${barColor}${bar} ${NUM_COLOR}${pctFmt}%${R}`;
+const artFmt = `${FG_GRAY}📦 ${NUM_COLOR}${artifactCount}${R}`;
+const subFmt = `${FG_GRAY}🤖 ${NUM_COLOR}${subagentsCount}${R}`;
+const bgFmt = `${FG_GRAY}⏳ ${NUM_COLOR}${taskCount}${R}`;
+
+let dirFmt = "";
+if (cwdShort) {
+ dirFmt = `${FG_GRAY} ╱ 📂 ${cwdShort}${R}`;
+}
+
+let convFmt = "";
+if (convId) {
+ convFmt = `${FG_GRAY} ╱ id:${convId.slice(0, 8)}${R}`;
+}
+
+let tokDetails = "";
+if (ctxUsed > 0) {
+ tokDetails = ` (${humanFormat(ctxUsed)}/${humanFormat(ctxLimit)})`;
+}
+
+const dot = `${FG_GRAY} · ${R}`;
+
+// ─── Output Assembly ──────────────────────────────────────────────────────────
+if (cols >= 120) {
+ let line1 = `${S}${M}${V}${dirFmt}${convFmt}`;
+ if (ctxUsed > 0) {
+ tokDetails = ` (${humanFormat(ctxUsed)}/${humanFormat(ctxLimit)} · ${humanFormat(inputTokens)} in/${humanFormat(outputTokens)} out)`;
+ }
+ let line2 = ` ${ctxBar}${tokDetails}${dot}${artFmt}${dot}${subFmt}${dot}${bgFmt}${dot}${SB}`;
+ console.log(`${line1}${FG_GRAY} │ ${R}${line2}`);
+} else if (cols >= 80) {
+ let line1 = `${S}${M}${V}${dirFmt}`;
+ let line2 = ` ${ctxBar}${tokDetails}${dot}${artFmt}${dot}${subFmt}${dot}${bgFmt}${dot}${SB}`;
+ console.log(`${FG_GRAY}╭─${R} ${line1}`);
+ console.log(`${FG_GRAY}╰─${R}${line2}`);
+} else {
+ let mShort = "";
+ if (modelDisp) {
+ mShort = `${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${modelDisp.slice(0, 12)}${R}`;
+ }
+ console.log(`${S}${mShort}`);
+ console.log(`${ctxBar}${dot}${bgFmt}`);
+}
diff --git a/examples/statusline/statusline.ps1 b/examples/statusline/statusline.ps1
new file mode 100644
index 000000000..e46f8c602
--- /dev/null
+++ b/examples/statusline/statusline.ps1
@@ -0,0 +1,223 @@
+# ─── Read JSON from stdin ────────────────────────────────────────────────────
+$inputJson = [Console]::In.ReadToEnd()
+if ([string]::IsNullOrWhiteSpace($inputJson)) {
+ $inputJson = '{}'
+}
+
+try {
+ $data = ConvertFrom-Json $inputJson -ErrorAction SilentlyContinue
+} catch {
+ $data = $null
+}
+
+if ($null -eq $data) {
+ $data = [PSCustomObject]@{}
+}
+
+# ─── ANSI Helpers (Standard 16-color palette only) ───────────────────────────
+$R = "$([char]0x1b)[0m" # Reset
+$B = "$([char]0x1b)[1m" # Bold
+$D = "$([char]0x1b)[2m" # Dim
+$I = "$([char]0x1b)[3m" # Italic
+
+# Foreground accents (Standard 16 colors)
+$FG_BLACK = "$([char]0x1b)[30m"
+$FG_RED = "$([char]0x1b)[31m"
+$FG_GREEN = "$([char]0x1b)[32m"
+$FG_YELLOW = "$([char]0x1b)[33m"
+$FG_BLUE = "$([char]0x1b)[34m"
+$FG_MAGENTA = "$([char]0x1b)[35m"
+$FG_CYAN = "$([char]0x1b)[36m"
+$FG_WHITE = "$([char]0x1b)[37m"
+
+$FG_GRAY = "$([char]0x1b)[90m"
+$FG_BRIGHT_RED = "$([char]0x1b)[91m"
+$FG_BRIGHT_GREEN = "$([char]0x1b)[92m"
+$FG_BRIGHT_YELLOW = "$([char]0x1b)[93m"
+$FG_BRIGHT_BLUE = "$([char]0x1b)[94m"
+$FG_BRIGHT_MAGENTA = "$([char]0x1b)[95m"
+$FG_BRIGHT_CYAN = "$([char]0x1b)[96m"
+$FG_BRIGHT_WHITE = "$([char]0x1b)[97m"
+
+$NUM_COLOR = "${FG_BRIGHT_WHITE}${B}"
+
+# ─── Extract fields with fallback ────────────────────────────────────────────
+$state = if ($data.agent_state) { $data.agent_state } else { "idle" }
+$usedPct = if ($data.context_window -and $null -ne $data.context_window.used_percentage) { [double]$data.context_window.used_percentage } else { 0.0 }
+$vcsBranch = if ($data.vcs -and $data.vcs.branch) { $data.vcs.branch } else { "" }
+$vcsDirty = if ($data.vcs -and $null -ne $data.vcs.dirty) { $data.vcs.dirty } else { $false }
+$vcsType = if ($data.vcs -and $data.vcs.type) { $data.vcs.type } else { "" }
+$sandboxEnabled = if ($data.sandbox -and $null -ne $data.sandbox.enabled) { $data.sandbox.enabled } else { $false }
+$sandboxNet = if ($data.sandbox -and $null -ne $data.sandbox.allow_network) { $data.sandbox.allow_network } else { $false }
+$artifactCount = if ($data.artifact_count) { $data.artifact_count } else { 0 }
+$subagentsCount = if ($data.subagents) { @($data.subagents).Count } else { 0 }
+$taskCount = if ($data.task_count) { $data.task_count } else { 0 }
+$modelId = if ($data.model -and $data.model.id) { $data.model.id } else { "" }
+$modelName = if ($data.model -and $data.model.display_name) { $data.model.display_name } else { "" }
+$cols = if ($data.terminal_width) { [int]$data.terminal_width } else { 80 }
+$cwd = if ($data.cwd) { $data.cwd } else { "" }
+$convId = if ($data.conversation_id) { $data.conversation_id } else { "" }
+$inputTokens = if ($data.context_window -and $null -ne $data.context_window.total_input_tokens) { $data.context_window.total_input_tokens } else { 0 }
+$outputTokens = if ($data.context_window -and $null -ne $data.context_window.total_output_tokens) { $data.context_window.total_output_tokens } else { 0 }
+$ctxLimit = if ($data.context_window -and $null -ne $data.context_window.context_window_size) { $data.context_window.context_window_size } else { 0 }
+$ctxUsed = $inputTokens + $outputTokens
+
+# ─── Helper Functions ────────────────────────────────────────────────────────
+function Get-HumanFormat {
+ param ($num)
+ if ($null -eq $num -or $num -eq 0) { return "0" }
+ if ($num -ge 1000000) {
+ $main = [Math]::Floor($num / 1000000)
+ $dec = [Math]::Floor(($num % 1000000) / 100000)
+ return "${main}.${dec}M"
+ }
+ if ($num -ge 1000) {
+ $main = [Math]::Floor($num / 1000)
+ $dec = [Math]::Floor(($num % 1000) / 100)
+ return "${main}.${dec}K"
+ }
+ return "$num"
+}
+
+function Get-ShortenPath {
+ param ($path)
+ if ([string]::IsNullOrEmpty($path)) { return "" }
+ $homePath = $env:USERPROFILE
+ if (-not $homePath) {
+ $homePath = $env:HOME
+ }
+ if ($homePath -and $path.StartsWith($homePath)) {
+ $path = "~" + $path.Substring($homePath.Length)
+ }
+ if ($path.Length -gt 25) {
+ $leaf = Split-Path $path -Leaf
+ return "...$leaf"
+ }
+ return $path
+}
+
+$cwdShort = Get-ShortenPath $cwd
+
+# ─── State Indicator ──────────────────────────────────────────────────────────
+switch ($state) {
+ "idle" { $S = "${FG_BRIGHT_GREEN}${B}● READY${R}" }
+ "thinking" { $S = "${FG_BRIGHT_YELLOW}${B}◆ THINKING${R}" }
+ "working" { $S = "${FG_BRIGHT_CYAN}${B}⚙ WORKING${R}" }
+ "tool_use" { $S = "${FG_BRIGHT_MAGENTA}${B}🔧 TOOL${R}" }
+ Default { $S = "${FG_WHITE}${B}⏳ $($state.ToUpper())${R}" }
+}
+
+# ─── VCS Branch & Type ───────────────────────────────────────────────────────
+$V = ""
+if (-not [string]::IsNullOrEmpty($vcsBranch)) {
+ $vcsLabel = if (-not [string]::IsNullOrEmpty($vcsType)) { $vcsType } else { "git" }
+ if ($vcsDirty -eq $true -or $vcsDirty -eq "true") {
+ $V = "${FG_GRAY} ╱ ${FG_GRAY}${vcsLabel}:${FG_BRIGHT_RED}${vcsBranch}${FG_BRIGHT_YELLOW}*${R}"
+ } else {
+ $V = "${FG_GRAY} ╱ ${FG_GRAY}${vcsLabel}:${FG_BRIGHT_BLUE}${vcsBranch}${R}"
+ }
+}
+
+# ─── Model ───────────────────────────────────────────────────────────────────
+$modelDisp = if (-not [string]::IsNullOrEmpty($modelName)) { $modelName } else { $modelId }
+$M = ""
+if (-not [string]::IsNullOrEmpty($modelDisp)) {
+ $M = "${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${I}${modelDisp}${R}"
+}
+
+# ─── Sandbox Badge ───────────────────────────────────────────────────────────
+if ($sandboxEnabled -eq $true -or $sandboxEnabled -eq "true") {
+ if ($sandboxNet -eq $true -or $sandboxNet -eq "true") {
+ $SB = "${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (net)${R}"
+ } else {
+ $SB = "${FG_GRAY}🛡️ sandbox ${FG_BRIGHT_GREEN}${B}ON (no-net)${R}"
+ }
+} else {
+ $SB = "${FG_GRAY}🛡️ sandbox off${R}"
+}
+
+# ─── Context Bar ─────────────────────────────────────────────────────────────
+$BAR_LEN = 15
+$pctInt = [int][Math]::Floor($usedPct)
+$filled = [int][Math]::Floor($pctInt * $BAR_LEN / 100)
+$remainder = ($pctInt * $BAR_LEN) % 100
+
+$barColor = $FG_BRIGHT_WHITE
+if ($pctInt -ge 90) {
+ $barColor = $FG_BRIGHT_RED
+} elseif ($pctInt -ge 60) {
+ $barColor = $FG_BRIGHT_YELLOW
+}
+
+$BAR = ""
+for ($i = 0; $i -lt $BAR_LEN; $i++) {
+ if ($i -lt $filled) {
+ $BAR += "█"
+ } elseif ($i -eq $filled) {
+ if ($remainder -ge 75) {
+ $BAR += "▓"
+ } elseif ($remainder -ge 50) {
+ $BAR += "▒"
+ } elseif ($remainder -ge 25) {
+ $BAR += "░"
+ } else {
+ $BAR += "·"
+ }
+ } else {
+ $BAR += "·"
+ }
+}
+
+# ─── Stats Formatting ────────────────────────────────────────────────────────
+$pctFmt = $usedPct.ToString("0.0", [System.Globalization.CultureInfo]::InvariantCulture)
+$CTX_BAR = "${FG_GRAY}ctx ${barColor}${BAR} ${NUM_COLOR}${pctFmt}%${R}"
+$ART_FMT = "${FG_GRAY}📦 ${NUM_COLOR}${artifactCount}${R}"
+$SUB_FMT = "${FG_GRAY}🤖 ${NUM_COLOR}${subagentsCount}${R}"
+$BG_FMT = "${FG_GRAY}⏳ ${NUM_COLOR}${taskCount}${R}"
+
+$DIR_FMT = ""
+if (-not [string]::IsNullOrEmpty($cwdShort)) {
+ $DIR_FMT = "${FG_GRAY} ╱ 📂 ${cwdShort}${R}"
+}
+
+$CONV_FMT = ""
+if (-not [string]::IsNullOrEmpty($convId)) {
+ $subConvId = if ($convId.Length -gt 8) { $convId.Substring(0, 8) } else { $convId }
+ $CONV_FMT = "${FG_GRAY} ╱ id:${subConvId}${R}"
+}
+
+$tokDetails = ""
+if ($ctxUsed -gt 0) {
+ $ctxUsedFmt = Get-HumanFormat $ctxUsed
+ $ctxLimitFmt = Get-HumanFormat $ctxLimit
+ $tokDetails = " (${ctxUsedFmt}/${ctxLimitFmt})"
+}
+
+$DOT = "${FG_GRAY} · ${R}"
+
+# ─── Output Assembly ──────────────────────────────────────────────────────────
+if ($cols -ge 120) {
+ $line1 = "${S}${M}${V}${DIR_FMT}${CONV_FMT}"
+ if ($ctxUsed -gt 0) {
+ $ctxUsedFmt = Get-HumanFormat $ctxUsed
+ $ctxLimitFmt = Get-HumanFormat $ctxLimit
+ $inputTokFmt = Get-HumanFormat $inputTokens
+ $outputTokFmt = Get-HumanFormat $outputTokens
+ $tokDetails = " (${ctxUsedFmt}/${ctxLimitFmt} · ${inputTokFmt} in/${outputTokFmt} out)"
+ }
+ $line2 = " ${CTX_BAR}${tokDetails}${DOT}${ART_FMT}${DOT}${SUB_FMT}${DOT}${BG_FMT}${DOT}${SB}"
+ Write-Output "${line1}${FG_GRAY} │ ${R}${line2}"
+} elseif ($cols -ge 80) {
+ $line1 = "${S}${M}${V}${DIR_FMT}"
+ $line2 = " ${CTX_BAR}${tokDetails}${DOT}${ART_FMT}${DOT}${SUB_FMT}${DOT}${BG_FMT}${DOT}${SB}"
+ Write-Output "${FG_GRAY}╭─${R} ${line1}"
+ Write-Output "${FG_GRAY}╰─${R}${line2}"
+} else {
+ $mShort = ""
+ if (-not [string]::IsNullOrEmpty($modelDisp)) {
+ $subModelDisp = if ($modelDisp.Length -gt 12) { $modelDisp.Substring(0, 12) } else { $modelDisp }
+ $mShort = "${FG_GRAY} ╱ ${FG_BRIGHT_MAGENTA}${subModelDisp}${R}"
+ }
+ Write-Output "${S}${mShort}"
+ Write-Output "${CTX_BAR}${DOT}${BG_FMT}"
+}
diff --git a/examples/title/README.md b/examples/title/README.md
index 1430ae61b..7070ff1be 100644
--- a/examples/title/README.md
+++ b/examples/title/README.md
@@ -1,18 +1,98 @@
-# CLI Title Example
+# Custom Window Title
-This directory contains an example script (`title.sh`) that demonstrates how to dynamically customize the window title for the Antigravity CLI based on the agent's current state.
+This directory contains reference implementations for dynamically customizing the terminal window title for the Antigravity CLI across different shell environments:
-For more details on how to use and configure the title script, please refer to the official public documentation:
-[https://antigravity.google/docs/cli-title](https://antigravity.google/docs/cli-title)
+1. **`title.sh`** (Bash/Zsh - Linux/macOS)
+2. **`title.js`** (Node.js - Cross-platform: Windows/Linux/macOS)
+3. **`title.ps1`** (PowerShell - Windows PowerShell or PowerShell Core `pwsh`)
+4. **`title.fish`** (Fish shell - Linux/macOS)
+
+## Quick Start
+
+### Option 1: Automatic Setup (Recommended for Bash/Zsh)
+
+Run the included setup script from the root of the repository:
+
+```bash
+bash examples/title/setup.sh
+```
+
+This script will automatically:
+1. Copy `title.sh` to your platform's global settings directory (so it stays configured even if you move or delete this repository).
+2. Configure and enable it in your global `settings.json` file.
+
+### Option 2: Manual configuration
+
+1. Copy the script corresponding to your shell to a directory of your choice.
+2. Edit your `settings.json` file to point `title.command` to the absolute path of the script and set `title.enabled` to `true`:
+
+#### Bash/Zsh (Linux/macOS)
+```json
+{
+ "title": {
+ "command": "/absolute/path/to/title.sh",
+ "enabled": true
+ }
+}
+```
+
+#### Node.js (Cross-platform)
+```json
+{
+ "title": {
+ "command": "node /absolute/path/to/title.js",
+ "enabled": true
+ }
+}
+```
+
+#### PowerShell (Windows / pwsh)
+```json
+{
+ "title": {
+ "command": "powershell.exe -ExecutionPolicy Bypass -File C:\\absolute\\path\\to\\title.ps1",
+ "enabled": true
+ }
+}
+```
+*For PowerShell Core, use `pwsh.exe` or `pwsh` instead of `powershell.exe`.*
+
+#### Fish Shell
+```json
+{
+ "title": {
+ "command": "/absolute/path/to/title.fish",
+ "enabled": true
+ }
+}
+```
+
+**Settings file locations:**
+
+| Platform | Path |
+| :--- | :--- |
+| Linux | `~/.gemini/antigravity-cli/settings.json` |
+| macOS | `~/Library/Application Support/antigravity-cli/settings.json` |
+| Windows | `%APPDATA%\antigravity-cli\settings.json` |
+
+> [!IMPORTANT]
+> The `command` field must be an **absolute path** to the script. Relative paths and `~` expansion are not supported.
+
+After saving, restart `agy` for changes to take effect.
## How it works
-The `title.sh` script reads a JSON payload from standard input, which contains real-time information about the agent's state and context. It then:
-1. Extracts the `agent_state` and `workspace.current_dir` using `jq`.
-2. Parses the current directory to determine a short workspace name (with special handling for CitC workspaces).
+The title script reads a JSON payload from standard input containing the CLI's state. It then:
+1. Extracts the `agent_state` and workspace directory path.
+2. Parses the current directory to determine a short workspace name.
3. Maps the agent state to a corresponding emoji (e.g., 🤔 for thinking, 🛠️ for tool use, 😴 for idle).
4. Outputs the formatted title string in the format: `[Emoji] [State] | [Workspace]`.
+### Prerequisites
+
+- **Bash (`title.sh`) & Fish (`title.fish`)**: Require [`jq`](https://jqlang.org/) to be installed and available in `$PATH`.
+- **Node.js (`title.js`) & PowerShell (`title.ps1`)**: Have **zero external dependencies** and work out-of-the-box.
+
## Examples
### Idle State
diff --git a/examples/title/setup.sh b/examples/title/setup.sh
new file mode 100644
index 000000000..1e7bd96cd
--- /dev/null
+++ b/examples/title/setup.sh
@@ -0,0 +1,98 @@
+#!/bin/bash
+# setup.sh - Installs and enables the custom window title for Antigravity CLI
+
+set -euo pipefail
+
+# 1. Determine the settings directory
+OS="$(uname -s)"
+case "${OS}" in
+ Darwin*)
+ CONFIG_DIR="$HOME/Library/Application Support/antigravity-cli"
+ ;;
+ Linux*)
+ CONFIG_DIR="$HOME/.gemini/antigravity-cli"
+ ;;
+ CYGWIN*|MINGW*|MSYS*)
+ # Windows environments (Git Bash, MSYS)
+ if [ -n "${APPDATA:-}" ]; then
+ CONFIG_DIR="${APPDATA}/antigravity-cli"
+ else
+ CONFIG_DIR="$HOME/AppData/Roaming/antigravity-cli"
+ fi
+ ;;
+ *)
+ # Default fallback to Linux path
+ CONFIG_DIR="$HOME/.gemini/antigravity-cli"
+ ;;
+esac
+
+# Convert config dir to absolute path if needed
+mkdir -p "$CONFIG_DIR"
+CONFIG_DIR="$(cd "$CONFIG_DIR" && pwd)"
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+SOURCE_SCRIPT="$SCRIPT_DIR/title.sh"
+TARGET_SCRIPT="$CONFIG_DIR/title.sh"
+
+echo "Installing title script to: $TARGET_SCRIPT"
+cp "$SOURCE_SCRIPT" "$TARGET_SCRIPT"
+chmod +x "$TARGET_SCRIPT"
+
+SETTINGS_FILE="$CONFIG_DIR/settings.json"
+echo "Configuring settings file at: $SETTINGS_FILE"
+
+# Make sure settings.json exists
+if [ ! -f "$SETTINGS_FILE" ]; then
+ echo "{}" > "$SETTINGS_FILE"
+fi
+
+# Update settings.json using python if available, otherwise fallback to jq
+if command -v python3 >/dev/null 2>&1; then
+ python3 -c '
+import json, sys
+file_path, script_path = sys.argv[1], sys.argv[2]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+if "title" not in data or not isinstance(data["title"], dict):
+ data["title"] = {}
+data["title"]["command"] = script_path
+data["title"]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$TARGET_SCRIPT"
+elif command -v python >/dev/null 2>&1; then
+ python -c '
+import json, sys
+file_path, script_path = sys.argv[1], sys.argv[2]
+try:
+ with open(file_path, "r") as f:
+ data = json.load(f)
+except Exception:
+ data = {}
+if "title" not in data or not isinstance(data["title"], dict):
+ data["title"] = {}
+data["title"]["command"] = script_path
+data["title"]["enabled"] = True
+with open(file_path, "w") as f:
+ json.dump(data, f, indent=2)
+' "$SETTINGS_FILE" "$TARGET_SCRIPT"
+elif command -v jq >/dev/null 2>&1; then
+ TEMP_FILE=$(mktemp)
+ jq --arg cmd "$TARGET_SCRIPT" '.title = ((.title // {}) + {command: $cmd, enabled: true})' "$SETTINGS_FILE" > "$TEMP_FILE"
+ mv "$TEMP_FILE" "$SETTINGS_FILE"
+else
+ echo "Error: Neither python3, python, nor jq is installed. Please manually add the following to your $SETTINGS_FILE:"
+ echo "{"
+ echo " \"title\": {"
+ echo " \"command\": \"$TARGET_SCRIPT\","
+ echo " \"enabled\": true"
+ echo " }"
+ echo "}"
+ exit 1
+fi
+
+echo "Terminal window title script successfully installed and enabled!"
+echo "Please restart Antigravity CLI (agy) to see the changes."
diff --git a/examples/title/title.fish b/examples/title/title.fish
new file mode 100755
index 000000000..2090bc13a
--- /dev/null
+++ b/examples/title/title.fish
@@ -0,0 +1,37 @@
+#!/usr/bin/fish
+
+# Read JSON payload from stdin
+set -l DATA (cat)
+
+if not type -q jq
+ echo "idle | unknown"
+ exit 0
+end
+
+set -l STATE (echo $DATA | jq -r '.agent_state // "idle"')
+set -l CWD (echo $DATA | jq -r '.workspace.current_dir // .cwd // ""')
+
+set -l WORKSPACE "unknown"
+if test -n "$CWD"
+ if string match -r '/google/src/cloud/[^/]+/([^/]+)' $CWD >/dev/null
+ set WORKSPACE (string replace -r '.*/google/src/cloud/[^/]+/([^/]+).*' '$1' $CWD)
+ else
+ set WORKSPACE (basename $CWD)
+ end
+end
+
+set -l EMOJI "🤖"
+switch $STATE
+ case initializing
+ set EMOJI "🚀"
+ case idle
+ set EMOJI "😴"
+ case thinking
+ set EMOJI "🤔"
+ case working
+ set EMOJI "🏃"
+ case tool_use
+ set EMOJI "🛠️"
+end
+
+echo "$EMOJI $STATE | $WORKSPACE"
diff --git a/examples/title/title.js b/examples/title/title.js
new file mode 100755
index 000000000..bad3305aa
--- /dev/null
+++ b/examples/title/title.js
@@ -0,0 +1,53 @@
+#!/usr/bin/env node
+const fs = require('fs');
+const path = require('path');
+
+// ─── Read JSON from stdin ────────────────────────────────────────────────────
+let rawData = '';
+try {
+ rawData = fs.readFileSync(0, 'utf-8');
+} catch (e) {
+ // Silence read errors
+}
+
+let data = {};
+try {
+ data = JSON.parse(rawData || '{}');
+} catch (e) {
+ // Silence JSON parse errors
+}
+
+const state = data.agent_state || "idle";
+const cwd = (data.workspace && data.workspace.current_dir) || data.cwd || "";
+
+let workspace = "unknown";
+if (cwd) {
+ const match = cwd.match(/\/google\/src\/cloud\/[^/]+\/([^/]+)/);
+ if (match) {
+ workspace = match[1];
+ } else {
+ workspace = path.basename(cwd);
+ }
+}
+
+// Map state to emoji
+let emoji = "🤖";
+switch (state) {
+ case 'initializing':
+ emoji = "🚀";
+ break;
+ case 'idle':
+ emoji = "😴";
+ break;
+ case 'thinking':
+ emoji = "🤔";
+ break;
+ case 'working':
+ emoji = "🏃";
+ break;
+ case 'tool_use':
+ emoji = "🛠️";
+ break;
+}
+
+console.log(`${emoji} ${state} | ${workspace}`);
diff --git a/examples/title/title.ps1 b/examples/title/title.ps1
new file mode 100644
index 000000000..520c4384b
--- /dev/null
+++ b/examples/title/title.ps1
@@ -0,0 +1,39 @@
+# ─── Read JSON from stdin ────────────────────────────────────────────────────
+$inputJson = [Console]::In.ReadToEnd()
+if ([string]::IsNullOrWhiteSpace($inputJson)) {
+ $inputJson = '{}'
+}
+
+try {
+ $data = ConvertFrom-Json $inputJson -ErrorAction SilentlyContinue
+} catch {
+ $data = $null
+}
+
+if ($null -eq $data) {
+ $data = [PSCustomObject]@{}
+}
+
+$state = if ($data.agent_state) { $data.agent_state } else { "idle" }
+$cwd = if ($data.workspace -and $data.workspace.current_dir) { $data.workspace.current_dir } elseif ($data.cwd) { $data.cwd } else { "" }
+
+$workspace = "unknown"
+if (-not [string]::IsNullOrEmpty($cwd)) {
+ if ($cwd -match '/google/src/cloud/[^/]+/([^/]+)') {
+ $workspace = $Matches[1]
+ } else {
+ $workspace = Split-Path $cwd -Leaf
+ }
+}
+
+# Map state to emoji
+switch ($state) {
+ "initializing" { $emoji = "🚀" }
+ "idle" { $emoji = "😴" }
+ "thinking" { $emoji = "🤔" }
+ "working" { $emoji = "🏃" }
+ "tool_use" { $emoji = "🛠️" }
+ Default { $emoji = "🤖" }
+}
+
+Write-Output "${emoji} ${state} | ${workspace}"
From 896b0b9eed6a5765329c7ffbb88eae317ce80572 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Fri, 29 May 2026 14:46:54 +0300
Subject: [PATCH 21/22] fix(statusline,title): improve stdin parsing and JSON
parsing validation for cross-platform scripts
---
examples/statusline/statusline.fish | 12 ++++++------
examples/statusline/statusline.js | 4 +++-
examples/statusline/statusline.ps1 | 18 +++++++++++++++---
examples/title/title.js | 3 ++-
examples/title/title.ps1 | 16 +++++++++++++---
5 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/examples/statusline/statusline.fish b/examples/statusline/statusline.fish
index fae25d7d5..ed35a1200 100755
--- a/examples/statusline/statusline.fish
+++ b/examples/statusline/statusline.fish
@@ -136,9 +136,9 @@ end
set -l SB ""
if test "$SANDBOX" = "true"
if test "$SANDBOX_NET" = "true"
- set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B"ON (net)"$R"
+ set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B ON (net)$R"
else
- set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B"ON (no-net)"$R"
+ set SB "$FG_GRAY🛡️ sandbox $FG_BRIGHT_GREEN$B ON (no-net)$R"
end
else
set SB "$FG_GRAY🛡️ sandbox off$R"
@@ -178,10 +178,10 @@ end
# Stats & Metadata
set -l PCT_FMT (printf "%.1f" $USED_PCT)
-set -l CTX_BAR "$FG_GRAY"ctx "$BAR_COLOR$BAR $NUM_COLOR$PCT_FMT%$R"
-set -l ART_FMT "$FG_GRAY"📦 "$NUM_COLOR$ARTIFACTS$R"
-set -l SUB_FMT "$FG_GRAY"🤖 "$NUM_COLOR$SUBAGENTS$R"
-set -l BG_FMT "$FG_GRAY"⏳ "$NUM_COLOR$BG_TASKS$R"
+set -l CTX_BAR "$FG_GRAY ctx $BAR_COLOR$BAR $NUM_COLOR$PCT_FMT%$R"
+set -l ART_FMT "$FG_GRAY 📦 $NUM_COLOR$ARTIFACTS$R"
+set -l SUB_FMT "$FG_GRAY 🤖 $NUM_COLOR$SUBAGENTS$R"
+set -l BG_FMT "$FG_GRAY ⏳ $NUM_COLOR$BG_TASKS$R"
set -l DIR_FMT ""
if test -n "$CWD_SHORT"
diff --git a/examples/statusline/statusline.js b/examples/statusline/statusline.js
index a8fcc8142..2010ec36e 100755
--- a/examples/statusline/statusline.js
+++ b/examples/statusline/statusline.js
@@ -15,7 +15,9 @@ let data = {};
try {
data = JSON.parse(rawData || '{}');
} catch (e) {
- // Silence JSON parse errors
+ // Output a clear error message in the statusline to help debugging
+ console.log(`\x1b[31m● ERROR: Invalid JSON input to statusline.js (${e.message})\x1b[0m`);
+ process.exit(0);
}
// ─── ANSI Helpers (Standard 16-color palette only) ───────────────────────────
diff --git a/examples/statusline/statusline.ps1 b/examples/statusline/statusline.ps1
index e46f8c602..eee453280 100644
--- a/examples/statusline/statusline.ps1
+++ b/examples/statusline/statusline.ps1
@@ -1,13 +1,25 @@
# ─── Read JSON from stdin ────────────────────────────────────────────────────
-$inputJson = [Console]::In.ReadToEnd()
+param(
+ [Parameter(ValueFromPipeline)]
+ [string]$inputJson
+)
+
+if ([string]::IsNullOrWhiteSpace($inputJson)) {
+ # Try reading from Console stdin (for redirected stdin from Go/agy.exe)
+ $inputJson = [Console]::In.ReadToEnd()
+}
+
if ([string]::IsNullOrWhiteSpace($inputJson)) {
$inputJson = '{}'
}
try {
- $data = ConvertFrom-Json $inputJson -ErrorAction SilentlyContinue
+ # -ErrorAction Stop is needed so catch block is triggered on invalid JSON
+ $data = ConvertFrom-Json $inputJson -ErrorAction Stop
} catch {
- $data = $null
+ # Output the JSON parsing error in red to make debugging copy-pasted blocks easy
+ Write-Output "$([char]0x1b)[31m● ERROR: Invalid JSON input to statusline.ps1 ($($_.Exception.Message))$([char]0x1b)[0m"
+ exit
}
if ($null -eq $data) {
diff --git a/examples/title/title.js b/examples/title/title.js
index bad3305aa..8e5089b36 100755
--- a/examples/title/title.js
+++ b/examples/title/title.js
@@ -14,7 +14,8 @@ let data = {};
try {
data = JSON.parse(rawData || '{}');
} catch (e) {
- // Silence JSON parse errors
+ console.log(`🤖 ERROR: Invalid JSON (${e.message})`);
+ process.exit(0);
}
const state = data.agent_state || "idle";
diff --git a/examples/title/title.ps1 b/examples/title/title.ps1
index 520c4384b..975bcda31 100644
--- a/examples/title/title.ps1
+++ b/examples/title/title.ps1
@@ -1,13 +1,23 @@
# ─── Read JSON from stdin ────────────────────────────────────────────────────
-$inputJson = [Console]::In.ReadToEnd()
+param(
+ [Parameter(ValueFromPipeline)]
+ [string]$inputJson
+)
+
+if ([string]::IsNullOrWhiteSpace($inputJson)) {
+ # Try reading from Console stdin (for redirected stdin from Go/agy.exe)
+ $inputJson = [Console]::In.ReadToEnd()
+}
+
if ([string]::IsNullOrWhiteSpace($inputJson)) {
$inputJson = '{}'
}
try {
- $data = ConvertFrom-Json $inputJson -ErrorAction SilentlyContinue
+ $data = ConvertFrom-Json $inputJson -ErrorAction Stop
} catch {
- $data = $null
+ Write-Output "🤖 ERROR: Invalid JSON ($($_.Exception.Message))"
+ exit
}
if ($null -eq $data) {
From 7636651397cbf2092aeb68c2c5f704f7887b5a03 Mon Sep 17 00:00:00 2001
From: weby-homelab
Date: Thu, 4 Jun 2026 13:34:10 +0300
Subject: [PATCH 22/22] fix(statusline): add git fallback to shell and
powershell implementations
---
examples/statusline/statusline.fish | 19 +++++++++++++++++++
examples/statusline/statusline.ps1 | 16 ++++++++++++++++
examples/statusline/statusline.sh | 16 ++++++++++++++++
3 files changed, 51 insertions(+)
diff --git a/examples/statusline/statusline.fish b/examples/statusline/statusline.fish
index ed35a1200..6d6374b00 100755
--- a/examples/statusline/statusline.fish
+++ b/examples/statusline/statusline.fish
@@ -109,6 +109,25 @@ switch $STATE
end
# VCS Branch & Type
+# Fallback to local git query if VCS_BRANCH is not provided in the JSON payload
+if test -z "$VCS_BRANCH"
+ set -l git_dir "."
+ if test -n "$CWD"
+ set git_dir $CWD
+ end
+ if git -C "$git_dir" rev-parse --is-inside-work-tree >/dev/null 2>&1
+ set VCS_BRANCH (git -C "$git_dir" rev-parse --abbrev-ref HEAD 2>/dev/null)
+ set VCS_TYPE "git"
+ if test -n "$VCS_BRANCH"
+ if git -C "$git_dir" status --porcelain 2>/dev/null | string match -q -r '.'
+ set VCS_DIRTY "true"
+ else
+ set VCS_DIRTY "false"
+ end
+ end
+ end
+end
+
set -l V ""
if test -n "$VCS_BRANCH"
set -l vcs_label "git"
diff --git a/examples/statusline/statusline.ps1 b/examples/statusline/statusline.ps1
index eee453280..dd337d84c 100644
--- a/examples/statusline/statusline.ps1
+++ b/examples/statusline/statusline.ps1
@@ -120,6 +120,22 @@ switch ($state) {
}
# ─── VCS Branch & Type ───────────────────────────────────────────────────────
+# Fallback to local git query if VCS_BRANCH is not provided in the JSON payload
+if ([string]::IsNullOrEmpty($vcsBranch)) {
+ $gitDir = if (-not [string]::IsNullOrEmpty($cwd)) { $cwd } else { "." }
+ # Run git commands and capture output safely
+ $isWorkTree = git -C $gitDir rev-parse --is-inside-work-tree 2>$null
+ if ($isWorkTree -eq "true") {
+ $branch = (git -C $gitDir rev-parse --abbrev-ref HEAD 2>$null).Trim()
+ if (-not [string]::IsNullOrEmpty($branch)) {
+ $vcsBranch = $branch
+ $vcsType = "git"
+ $status = (git -C $gitDir status --porcelain 2>$null).Trim()
+ $vcsDirty = if (-not [string]::IsNullOrEmpty($status)) { "true" } else { "false" }
+ }
+ }
+}
+
$V = ""
if (-not [string]::IsNullOrEmpty($vcsBranch)) {
$vcsLabel = if (-not [string]::IsNullOrEmpty($vcsType)) { $vcsType } else { "git" }
diff --git a/examples/statusline/statusline.sh b/examples/statusline/statusline.sh
index 893b38fa7..f9eb53edc 100755
--- a/examples/statusline/statusline.sh
+++ b/examples/statusline/statusline.sh
@@ -131,6 +131,22 @@ case "$STATE" in
esac
# ─── VCS Branch & Type ───────────────────────────────────────────────────────
+# Fallback to local git query if VCS_BRANCH is not provided in the JSON payload
+if [ -z "$VCS_BRANCH" ]; then
+ GIT_DIR="${CWD:-.}"
+ if git -C "$GIT_DIR" rev-parse --is-inside-work-tree &>/dev/null; then
+ VCS_BRANCH=$(git -C "$GIT_DIR" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "")
+ VCS_TYPE="git"
+ if [ -n "$VCS_BRANCH" ]; then
+ if git -C "$GIT_DIR" status --porcelain 2>/dev/null | grep -q .; then
+ VCS_DIRTY="true"
+ else
+ VCS_DIRTY="false"
+ fi
+ fi
+ fi
+fi
+
V=""
if [ -n "$VCS_BRANCH" ]; then
VCS_LABEL="${VCS_TYPE:-git}"