Launcher side-by-side do Oh My Pi usando o código do PR que remove requestType: "agent" das requisições Google Antigravity.
O objetivo é manter o omp oficial intacto enquanto o upstream não publica uma release com a correção.
Estado do pin: este repositório fixa o commit
b1ffa68caf746b41110ff978074a0faffb8d21de, correspondente ao PR #11742.O PR #11742 é a correção de protocolo: o cliente oficial do Antigravity omite
requestType: "agent", enquanto versões afetadas do OMP enviam esse campo e recebem um429 RESOURCE_EXHAUSTEDfalso, mesmo com quota disponível.
O omp2 não é um fork parcial e não substitui o omp global. Ele executa um checkout completo do OMP, fixado em um commit conhecido:
omp → instalação/release oficial
omp2 → checkout local do PR #11742
O launcher é apenas:
bun /caminho/para/omp2-source/packages/coding-agent/src/cli.ts
Todo o restante do comportamento vem do OMP upstream naquele commit: ferramentas, modelos, autenticação, rotação de contas, sessões e configurações.
Sem --profile e sem PI_CODING_AGENT_DIR customizado, os dois comandos usam os mesmos dados em ~/.omp/agent:
- contas OAuth do Google Antigravity;
agent.dbe o pool de credenciais;- tokens e refresh tokens armazenados pelo OMP;
- usage reports e estado persistido de rate limit;
- configurações globais em
~/.omp; - sessões e logs conforme o comando executado.
Uma conta adicionada com omp fica disponível para omp2, e vice-versa. Para garantir que uma sessão veja uma credencial recém-adicionada, encerre a sessão antiga e abra outra.
Segurança:
agent.dbcontém credenciais OAuth. Não faça commit, não envie esse arquivo para este repositório e não o copie entre VPSs sem transferência segura. A opção recomendada é fazer login novamente na VPS destino.
Para Linux x64:
- Git;
- Bun
>= 1.3.14; curl;tar;- acesso de rede ao GitHub e ao npm registry;
- uma instalação funcional de autenticação do OMP.
Não para o fluxo deste repositório.
O instalador baixa o addon nativo Linux pré-compilado @oh-my-pi/pi-natives-linux-x64@18.1.17 e o coloca no checkout local. Rust/Cargo só é necessário se você quiser recompilar o addon Rust pi_natives manualmente.
Use o método padrão da sua distribuição para instalar Git. Instale Bun conforme a documentação oficial:
curl -fsSL https://bun.sh/install | bash
source "$HOME/.bashrc"Confirme:
git --version
bun --versionO instalador deste projeto não executa scripts externos de bootstrap além dos comandos que você chama explicitamente.
Se ele estiver hospedado em um repositório privado:
git clone <URL-DO-SEU-REPO-OMP2-DEPLOY> "$HOME/omp2-deploy"
cd "$HOME/omp2-deploy"Se você transferir o diretório por scp/rsync, preserve os arquivos README.md, VERSION, install.sh e omp2.
cd "$HOME/omp2-deploy"
./install.shO instalador:
- clona o repositório upstream do OMP em
~/.local/share/omp2/source; - busca o ref do PR
pull/11742/head; - verifica e faz checkout do commit fixado em
VERSION; - instala as dependências com
bun install --frozen-lockfile; - baixa o addon nativo Linux compatível com a versão do checkout;
- instala o launcher em
~/.local/bin/omp2.
Adicione o diretório ao PATH se necessário:
export PATH="$HOME/.local/bin:$PATH"
printf '\nexport PATH="$HOME/.local/bin:$PATH"\n' >> "$HOME/.bashrc"
source "$HOME/.bashrc"omp2 --version
git -C "$HOME/.local/share/omp2/source" rev-parse HEADO primeiro comando pode mostrar omp/18.1.17. Isso é a versão-base do pacote; o código executado continua sendo o commit fixado do PR.
O segundo deve mostrar:
b1ffa68caf746b41110ff978074a0faffb8d21de
Confirme que o campo problemático não está mais sendo atribuído no provider principal:
grep -nE 'requestType[[:space:]]*:' \
"$HOME/.local/share/omp2/source/packages/ai/src/providers/google-gemini-cli.ts"O resultado esperado é vazio para a atribuição do envelope Antigravity. A interface antiga pode não existir mais nesse commit conforme a atualização do PR.
omp2 -p --no-title \
--model google-antigravity/gemini-3.8-flash \
'Responda apenas: OMP2-INSTALADO-OK'Resultado esperado:
OMP2-INSTALADO-OK
Esse teste confirma o caminho completo: launcher, checkout local, dependências, addon nativo, autenticação e chamada Antigravity.
Use o omp2 para adicionar uma conta:
omp2 auth-broker login google-antigravityRepita para cada conta adicional.
Alternativamente, dentro de uma sessão interativa:
/login
Selecione Google Antigravity.
Confira as contas e quotas:
omp2 usage --provider google-antigravityOu:
omp2 usage --json --provider google-antigravityEm um servidor headless, o OMP pode tentar abrir a URL OAuth com xdg-open e falhar. Isso não significa que o OAuth esteja inválido.
Procedimento:
- execute
omp2 auth-broker login google-antigravityna VPS; - copie a URL OAuth exibida no terminal;
- abra a URL em um navegador local autorizado;
- conclua o consentimento;
- cole o redirect URL/código quando o fluxo solicitar.
Nunca publique a URL OAuth, o código ou tokens em chat, issue ou log compartilhado.
Entrar no modo interativo:
omp2Enviar uma mensagem inicial:
omp2 'Analise este projeto e me diga por onde começar.'Modo não interativo:
omp2 -p 'Responda apenas com OK.'Escolher explicitamente o modelo:
omp2 --model google-antigravity/gemini-3.8-flashO diretório atual continua sendo o diretório do terminal. O launcher não faz cd para dentro do checkout do OMP.
Não atualize automaticamente para main. O propósito deste repositório é reproduzir um commit conhecido.
Para trocar o commit:
- altere somente
VERSION; - confira que o commit contém a correção desejada;
- execute
./install.sh; - confirme o hash instalado;
- rode o smoke test.
Exemplo de verificação:
EXPECTED="b1ffa68caf746b41110ff978074a0faffb8d21de"
ACTUAL="$(git -C "$HOME/.local/share/omp2/source" rev-parse HEAD)"
[[ "$ACTUAL" == "$EXPECTED" ]] && echo 'pin correto'Se o checkout tiver alterações locais, o instalador para em vez de sobrescrevê-las. Para reinstalar um checkout descartável, remova apenas o source local depois de confirmar que não há alterações importantes:
rm -rf "$HOME/.local/share/omp2/source"
./install.shNão remova ~/.omp/agent se quiser preservar contas e sessões.
Acompanhe:
Antes de aposentar o omp2, confirme na release que o código publicado não atribui mais requestType: "agent":
gh api \
'repos/can1357/oh-my-pi/contents/packages/ai/src/providers/google-gemini-cli.ts?ref=TAG' \
--jq '.content' | base64 -d | grep -n 'requestType'Depois:
omp update
omp --version
omp -p --no-title \
--model google-antigravity/gemini-3.8-flash \
'Responda apenas: OMP-OFICIAL-CORRIGIDO-OK'Somente após validar o omp oficial, remova o launcher e o checkout:
rm -f "$HOME/.local/bin/omp2"
rm -rf "$HOME/.local/share/omp2/source"O source ainda não foi instalado ou OMP2_SOURCE_DIR aponta para o lugar errado:
cd "$HOME/omp2-deploy"
./install.shReexecute:
cd "$HOME/omp2-deploy"
./install.shO instalador baixa os dois variantes do addon Linux x64. Cargo só é necessário se você escolher compilação local:
bun --cwd="$HOME/.local/share/omp2/source/packages/natives" run buildEsse comando exige Rust/Cargo e não faz parte do caminho padrão.
Esse é o resultado esperado enquanto o omp oficial ainda estiver enviando o envelope antigo. Use omp2 para sessões Antigravity.
Verifique, nesta ordem:
git -C "$HOME/.local/share/omp2/source" rev-parse HEAD
omp2 usage --json --provider google-antigravityDepois confirme:
- que o commit é o pin esperado;
- que a conta não está realmente sem quota;
- que não há uma sessão antiga usando o mesmo fluxo;
- que o endpoint não mudou upstream;
- que o erro é o
RESOURCE_EXHAUSTEDsem detalhes descrito em #11689.
Use o procedimento de VPS headless acima. O problema é a ausência de um abridor de URL no servidor, não necessariamente a credencial.
Confirme que ambos usam o mesmo diretório de dados:
echo "${PI_CODING_AGENT_DIR:-$HOME/.omp/agent}"Não use --profile em um comando e o perfil padrão no outro se a intenção for compartilhar contas.
O rollback não altera o omp oficial:
rm -f "$HOME/.local/bin/omp2"
rm -rf "$HOME/.local/share/omp2/source"As contas em ~/.omp/agent permanecem preservadas.
O código executado pertence ao projeto upstream:
Este repositório contém somente o pin operacional, o launcher e o instalador para reproduzir o ambiente corrigido.