diff --git a/TOOLS b/TOOLS index 3c0d62f..c85e0a5 100644 --- a/TOOLS +++ b/TOOLS @@ -106,6 +106,11 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot ## 7. Utilitários Nativos do Framework .agent +### atualizar-submodulo.sh (`.agent/scripts/atualizar-submodulo.sh`) +- **Descrição:** Script de ciclo de vida acionado automaticamente via hook `PreInvocation` (`.agent/hooks.json`) ou manualmente via CLI. +- **Por que ajuda as IAs e Operadores:** Garante que o submódulo `.agent` esteja sincronizado na branch `master` remota no início de cada sessão de conversa (`1x por sessão`) e verifica automaticamente **uma vez por dia** se o runtime Bun está atualizado na versão estável mais recente executando `bun upgrade --stable` (controlado via trava diária `/tmp/.antigravity_bun_upgrade_date`). +- **Uso:** `bash .agent/scripts/atualizar-submodulo.sh` + ### notificar.sh (`.agent/notificar.sh`) - **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**. - **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless. diff --git a/TOOLS.md b/TOOLS.md index 3c0d62f..c85e0a5 100644 --- a/TOOLS.md +++ b/TOOLS.md @@ -106,6 +106,11 @@ Este documento lista ferramentas de linha de comando (CLI) e utilitários que ot ## 7. Utilitários Nativos do Framework .agent +### atualizar-submodulo.sh (`.agent/scripts/atualizar-submodulo.sh`) +- **Descrição:** Script de ciclo de vida acionado automaticamente via hook `PreInvocation` (`.agent/hooks.json`) ou manualmente via CLI. +- **Por que ajuda as IAs e Operadores:** Garante que o submódulo `.agent` esteja sincronizado na branch `master` remota no início de cada sessão de conversa (`1x por sessão`) e verifica automaticamente **uma vez por dia** se o runtime Bun está atualizado na versão estável mais recente executando `bun upgrade --stable` (controlado via trava diária `/tmp/.antigravity_bun_upgrade_date`). +- **Uso:** `bash .agent/scripts/atualizar-submodulo.sh` + ### notificar.sh (`.agent/notificar.sh`) - **Descrição:** Utilitário unificado de notificação para o Sistema Operacional, compatível nativamente com **Linux** e **macOS**. - **Por que ajuda as IAs e Operadores:** Permite que comandos de longa duração (como `/plano.executar todos` e loops `/goal`) avisem o operador imediatamente no momento da conclusão, emitindo popup no desktop (KDE `kdialog`, FreeDesktop `notify-send` / `gdbus`, macOS Notification Center via `osascript`), som de alerta discreto (PipeWire, PulseAudio ou macOS `afplay`) e campainha no terminal (`\a`). Totalmente assíncrono, não-bloqueante e seguro para ambientes headless. diff --git a/global/rules/atualizacao-submodulo-sessao.md b/global/rules/atualizacao-submodulo-sessao.md index b725dfe..b1155ee 100644 --- a/global/rules/atualizacao-submodulo-sessao.md +++ b/global/rules/atualizacao-submodulo-sessao.md @@ -1,13 +1,13 @@ --- type: rule name: atualizacao-submodulo-sessao -description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho +description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho e verificação diária do runtime Bun (bun upgrade --stable) scope: global trigger: always_on -updatedAt: "2026-10-14" +updatedAt: "2026-10-30" --- -# Regra: Atualização Obrigatória do Submódulo `.agent` na Branch Master ao Iniciar Sessão +# Regra: Atualização Obrigatória do Submódulo `.agent` ao Iniciar Sessão e Verificação Diária do Bun ## Contexto @@ -17,19 +17,22 @@ O ecossistema Azteca adota o framework `.agent` como um **git submodule** polim https://git2.idz.one/publico/.agent.git ``` -Trabalhar com uma versão defasada do submódulo `.agent` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou use padrões depreciados. Por isso, a sincronização do submódulo na branch `master` é mandatória ao iniciar qualquer sessão. +Além disso, todo o ecossistema utiliza o **Bun** como runtime e gerenciador de pacotes padrão. Trabalhar com uma versão defasada do submódulo `.agent` ou do runtime `bun` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou enfrente incompatibilidades de runtime. Por isso, a sincronização do submódulo na branch `master` (a cada sessão) e a verificação de atualização do Bun na versão estável (uma vez por dia) são mandatórias. --- -## Regra Mandatória de Inicialização +## Regra Mandatória de Inicialização e Manutenção Diária -Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: +1. **Sincronização por Sessão do `.agent`:** Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: + ```bash + git submodule update --init --recursive --remote + ``` +2. **Verificação Diária do Runtime Bun (1x por dia):** Uma vez por dia, o ambiente **DEVE verificar se o Bun está atualizado** na versão estável mais recente executando: + ```bash + bun upgrade --stable + ``` -```bash -git submodule update --init --recursive --remote -``` - -Esta operação é classificada como uma **ação autônoma** (conforme `rules/autonomia-agente.md`) e não requer autorização prévia do operador humano. +Ambas as operações são classificadas como **ações autônomas** (conforme `rules/autonomia-agente.md`) e não requerem autorização prévia do operador humano. --- @@ -57,24 +60,25 @@ git submodule set-branch --branch master .agent O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`: 1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`. -2. O script detecta a raiz do projeto pai (superprojeto) e verifica a existência de uma trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). -3. **Idempotência:** A sincronização remota é executada apenas no primeiro turno da sessão. Turnos subsequentes retornam imediatamente (`{}`), garantindo zero latência adicional durante o diálogo. -4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master`. +2. **Idempotência Diária do Bun (`1x por dia`):** O script verifica o arquivo de controle `/tmp/.antigravity_bun_upgrade_date` (formato `YYYY-MM-DD`). Caso ainda não tenha sido verificado na data atual, executa `bun upgrade --stable` e grava a data do dia no arquivo de controle. Execuções subsequentes no mesmo dia ignoram o comando com zero latência. +3. **Idempotência de Sessão do `.agent` (`1x por conversa`):** O script detecta a raiz do projeto pai (superprojeto) e verifica a existência da trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). A sincronização remota do submódulo é executada apenas no primeiro turno da sessão, retornando imediatamente (`{}`) nos turnos seguintes. +4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master` e, quando executada no dia, o resultado da atualização do Bun. --- ## 3. Resiliência e Fallback Offline -A atualização do submódulo nunca deve interromper ou impedir o atendimento ao operador: +A atualização do submódulo e a verificação diária do Bun nunca devem interromper ou impedir o atendimento ao operador: - Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente. -- O agente emite um aviso no log/contexto informando que a sincronização remota não pôde ser completada e prossegue normalmente a execução com a versão local já presente no submódulo. +- O agente emite um aviso no log/contexto informando que a sincronização remota ou verificação do Bun não pôde ser completada e prossegue normalmente a execução com as versões locais já presentes. --- ## Proibições - **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador. +- **NUNCA** atualizar o Bun para versões canary/instáveis automaticamente (utilizar sempre `--stable`). - **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota. - **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia. diff --git a/global/rules/autonomia-agente.md b/global/rules/autonomia-agente.md index c2fa507..4fffbfd 100644 --- a/global/rules/autonomia-agente.md +++ b/global/rules/autonomia-agente.md @@ -29,6 +29,7 @@ O agente pode executar sem perguntar: - Aplicar padrões de nomenclatura já definidos em rules - Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações - Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master` +- Verificar e atualizar o runtime Bun uma vez por dia executando `bun upgrade --stable` - Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA ## Ações que Requerem Confirmação diff --git a/global/rules/identidade-modulo.md b/global/rules/identidade-modulo.md index 7eb04db..fbcd575 100644 --- a/global/rules/identidade-modulo.md +++ b/global/rules/identidade-modulo.md @@ -82,7 +82,7 @@ Sempre que qualquer agente, persona, workflow ou skill necessitar de: 3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes; 4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis; 5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia; -6. **Sincronização do Submódulo (`.agent`)**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote`. +6. **Sincronização do Submódulo (`.agent`) e Verificação Diária do Bun**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote` e que o runtime Bun seja verificado uma vez por dia com `bun upgrade --stable` (automatizado via `.agent/scripts/atualizar-submodulo.sh`). 👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.** diff --git a/hooks.json b/hooks.json index c1bc28f..a9569a2 100644 --- a/hooks.json +++ b/hooks.json @@ -4,7 +4,7 @@ { "type": "command", "command": "[ -f .agent/scripts/atualizar-submodulo.sh ] && bash .agent/scripts/atualizar-submodulo.sh || bash scripts/atualizar-submodulo.sh", - "timeout": 20 + "timeout": 45 } ] } diff --git a/manifesto.json b/manifesto.json index 149e754..e79a85d 100644 --- a/manifesto.json +++ b/manifesto.json @@ -1,5 +1,5 @@ { - "versao": "3.4.1", + "versao": "3.4.2", "atualizadoEm": "2026-10-30", "projeto": "agnostico-submodulo", "identidade": "memorias-ia/modulo.yml", diff --git a/rules/atualizacao-submodulo-sessao.md b/rules/atualizacao-submodulo-sessao.md index b725dfe..b1155ee 100644 --- a/rules/atualizacao-submodulo-sessao.md +++ b/rules/atualizacao-submodulo-sessao.md @@ -1,13 +1,13 @@ --- type: rule name: atualizacao-submodulo-sessao -description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho +description: Atualização obrigatória do submódulo .agent na branch master ao iniciar qualquer sessão de trabalho e verificação diária do runtime Bun (bun upgrade --stable) scope: global trigger: always_on -updatedAt: "2026-10-14" +updatedAt: "2026-10-30" --- -# Regra: Atualização Obrigatória do Submódulo `.agent` na Branch Master ao Iniciar Sessão +# Regra: Atualização Obrigatória do Submódulo `.agent` ao Iniciar Sessão e Verificação Diária do Bun ## Contexto @@ -17,19 +17,22 @@ O ecossistema Azteca adota o framework `.agent` como um **git submodule** polim https://git2.idz.one/publico/.agent.git ``` -Trabalhar com uma versão defasada do submódulo `.agent` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou use padrões depreciados. Por isso, a sincronização do submódulo na branch `master` é mandatória ao iniciar qualquer sessão. +Além disso, todo o ecossistema utiliza o **Bun** como runtime e gerenciador de pacotes padrão. Trabalhar com uma versão defasada do submódulo `.agent` ou do runtime `bun` faz com que o agente tome decisões baseadas em regras antigas, falhe em auditorias de setup ou enfrente incompatibilidades de runtime. Por isso, a sincronização do submódulo na branch `master` (a cada sessão) e a verificação de atualização do Bun na versão estável (uma vez por dia) são mandatórias. --- -## Regra Mandatória de Inicialização +## Regra Mandatória de Inicialização e Manutenção Diária -Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: +1. **Sincronização por Sessão do `.agent`:** Ao iniciar uma nova sessão de trabalho ou interação no projeto hospedeiro, a sincronização do submódulo `.agent` **DEVE OBRIGATORIAMENTE ser executada** na branch `master`: + ```bash + git submodule update --init --recursive --remote + ``` +2. **Verificação Diária do Runtime Bun (1x por dia):** Uma vez por dia, o ambiente **DEVE verificar se o Bun está atualizado** na versão estável mais recente executando: + ```bash + bun upgrade --stable + ``` -```bash -git submodule update --init --recursive --remote -``` - -Esta operação é classificada como uma **ação autônoma** (conforme `rules/autonomia-agente.md`) e não requer autorização prévia do operador humano. +Ambas as operações são classificadas como **ações autônomas** (conforme `rules/autonomia-agente.md`) e não requerem autorização prévia do operador humano. --- @@ -57,24 +60,25 @@ git submodule set-branch --branch master .agent O framework `.agent` disponibiliza um hook nativo do Antigravity em `.agent/hooks.json` vinculado ao evento `PreInvocation`: 1. No início da conversa, o hook aciona o script `.agent/scripts/atualizar-submodulo.sh`. -2. O script detecta a raiz do projeto pai (superprojeto) e verifica a existência de uma trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). -3. **Idempotência:** A sincronização remota é executada apenas no primeiro turno da sessão. Turnos subsequentes retornam imediatamente (`{}`), garantindo zero latência adicional durante o diálogo. -4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master`. +2. **Idempotência Diária do Bun (`1x por dia`):** O script verifica o arquivo de controle `/tmp/.antigravity_bun_upgrade_date` (formato `YYYY-MM-DD`). Caso ainda não tenha sido verificado na data atual, executa `bun upgrade --stable` e grava a data do dia no arquivo de controle. Execuções subsequentes no mesmo dia ignoram o comando com zero latência. +3. **Idempotência de Sessão do `.agent` (`1x por conversa`):** O script detecta a raiz do projeto pai (superprojeto) e verifica a existência da trava temporária da sessão (`/tmp/.antigravity_agent_updated_${conversationId}`). A sincronização remota do submódulo é executada apenas no primeiro turno da sessão, retornando imediatamente (`{}`) nos turnos seguintes. +4. Ao concluir com sucesso, o script emite uma notificação efêmera informando a IA sobre a sincronização na branch `master` e, quando executada no dia, o resultado da atualização do Bun. --- ## 3. Resiliência e Fallback Offline -A atualização do submódulo nunca deve interromper ou impedir o atendimento ao operador: +A atualização do submódulo e a verificação diária do Bun nunca devem interromper ou impedir o atendimento ao operador: - Se o ambiente estiver sem acesso à internet, com DNS indisponível ou falha temporária de rede, o script captura o erro graciosamente. -- O agente emite um aviso no log/contexto informando que a sincronização remota não pôde ser completada e prossegue normalmente a execução com a versão local já presente no submódulo. +- O agente emite um aviso no log/contexto informando que a sincronização remota ou verificação do Bun não pôde ser completada e prossegue normalmente a execução com as versões locais já presentes. --- ## Proibições - **NUNCA** travar o submódulo `.agent` em branches experimentais ou desatualizadas sem autorização explícita do operador. +- **NUNCA** atualizar o Bun para versões canary/instáveis automaticamente (utilizar sempre `--stable`). - **NUNCA** abortar a sessão ou falhar com crash caso a rede esteja indisponível para atualização remota. - **NUNCA** executar `git submodule update --remote` descartando alterações locais em desenvolvimento sem verificação prévia. diff --git a/rules/autonomia-agente.md b/rules/autonomia-agente.md index c2fa507..4fffbfd 100644 --- a/rules/autonomia-agente.md +++ b/rules/autonomia-agente.md @@ -29,6 +29,7 @@ O agente pode executar sem perguntar: - Aplicar padrões de nomenclatura já definidos em rules - Sugerir o texto de mensagem de commit (padrão Conventional Commits) ao operador humano após concluir implementações ou documentações - Atualizar o submódulo `.agent` ao iniciar uma sessão executando `git submodule update --init --recursive --remote` na branch `master` +- Verificar e atualizar o runtime Bun uma vez por dia executando `bun upgrade --stable` - Executar `git add`, `git commit`, `git pull --rebase` e `git push` diretamente na branch `master` **exclusivamente no submódulo `.agent`** ao evoluir artefatos de IA ## Ações que Requerem Confirmação diff --git a/rules/identidade-modulo.md b/rules/identidade-modulo.md index 7eb04db..fbcd575 100644 --- a/rules/identidade-modulo.md +++ b/rules/identidade-modulo.md @@ -82,7 +82,7 @@ Sempre que qualquer agente, persona, workflow ou skill necessitar de: 3. **Propósito ou Stack (`modulo-descricao` e `modulo-tipo`)**: para contextualizar novos agentes, gerar propostas comerciais, marketing, reels, análises de arquitetura ou testes; 4. **Credenciais de Testes (`modulo-acesso`)**: O agente de testes (`@testes`, rotinas com `agent-browser`, QA) DEVE extrair as credenciais do contexto específico (`interno`, `externo`, `cliente`, etc.) ou credenciais diretas de `modulo-acesso` em `memorias-ia/modulo.yml` para autenticação determinística sem contaminação de cookies/tokens entre perfis; 5. **Caminho da Wiki (`modulo-wiki`)**: Qualquer operação de documentação, leitura de regras ou escrita na Wiki deve resolver o caminho a partir de `modulo-wiki`, adotando compulsoriamente `../wiki/` caso a chave não esteja presente ou esteja vazia; -6. **Sincronização do Submódulo (`.agent`)**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote`. +6. **Sincronização do Submódulo (`.agent`) e Verificação Diária do Bun**: Ao iniciar qualquer sessão ou interação no projeto hospedeiro, o agente DEVE assegurar que o submódulo `.agent` esteja atualizado com a branch `master` remota executando `git submodule update --init --recursive --remote` e que o runtime Bun seja verificado uma vez por dia com `bun upgrade --stable` (automatizado via `.agent/scripts/atualizar-submodulo.sh`). 👉 **O agente DEVE obrigatoriamente ler e extrair as informações de `memorias-ia/modulo.yml`.** diff --git a/scripts/atualizar-submodulo.sh b/scripts/atualizar-submodulo.sh index 4db2406..be0b772 100755 --- a/scripts/atualizar-submodulo.sh +++ b/scripts/atualizar-submodulo.sh @@ -1,12 +1,16 @@ #!/usr/bin/env bash # ============================================================================== -# Script de Ciclo de Vida: Atualização do Submódulo .agent ao Iniciar Sessão -# Executa: git submodule update --init --recursive --remote na branch master +# Script de Ciclo de Vida: Atualização do Submódulo .agent e Runtime Bun +# - Sincroniza o submódulo .agent na branch master (1x por sessão de conversa) +# - Verifica e atualiza o Bun com `bun upgrade --stable` (1x por dia) # Compatível com CLI e Lifecycle Hook do Antigravity (PreInvocation). # ============================================================================== set -e +# Garantir que o diretório padrão do Bun esteja no PATH em execuções não-interativas (Hook) +export PATH="$HOME/.bun/bin:$PATH" + INPUT_JSON="" IS_PIPE=0 if [ ! -t 0 ]; then @@ -20,15 +24,52 @@ if [ -n "$INPUT_JSON" ]; then CONV_ID=$(echo "$INPUT_JSON" | grep -o '"conversationId":[[:space:]]*"[^"]*' | sed 's/.*"//' || true) fi -# Idempotência: executar apenas uma vez por sessão de conversa +# Controle de verificação diária do Bun (1x por dia: YYYY-MM-DD) +BUN_STAMP_FILE="/tmp/.antigravity_bun_upgrade_date" +TODAY=$(date +%Y-%m-%d) +LAST_BUN_CHECK=$(cat "$BUN_STAMP_FILE" 2>/dev/null || true) +NEEDS_BUN_CHECK=0 +if [ "$LAST_BUN_CHECK" != "$TODAY" ]; then + NEEDS_BUN_CHECK=1 +fi + +# Idempotência por sessão: se o submódulo já foi atualizado nesta conversa E o Bun já foi verificado hoje if [ -n "$CONV_ID" ]; then LOCK_FILE="/tmp/.antigravity_agent_updated_${CONV_ID}" - if [ -f "$LOCK_FILE" ]; then + if [ -f "$LOCK_FILE" ] && [ "$NEEDS_BUN_CHECK" -eq 0 ]; then echo "{}" exit 0 fi fi +# Executar verificação diária do Bun (1x por dia) +BUN_STATUS_MSG="" +if [ "$NEEDS_BUN_CHECK" -eq 1 ]; then + if command -v bun >/dev/null 2>&1; then + if bun upgrade --stable >/dev/null 2>&1; then + echo "$TODAY" > "$BUN_STAMP_FILE" 2>/dev/null || true + BUN_VER=$(bun --version 2>/dev/null || true) + BUN_STATUS_MSG=" Bun verificado/atualizado hoje (bun upgrade --stable -> v${BUN_VER})." + else + BUN_STATUS_MSG=" Aviso: não foi possível verificar atualização diária do Bun (bun upgrade --stable)." + fi + else + BUN_STATUS_MSG=" Aviso: binário 'bun' não encontrado no PATH para verificação diária." + fi +fi + +# Se a sessão já havia atualizado o submódulo antes (ex: virou o dia na mesma conversa), retornar status do Bun +if [ -n "$CONV_ID" ] && [ -f "$LOCK_FILE" ]; then + if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ] && [ -n "$BUN_STATUS_MSG" ]; then + echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️${BUN_STATUS_MSG}\"}]}" + elif [ "$IS_PIPE" -eq 1 ]; then + echo "{}" + else + echo "✅${BUN_STATUS_MSG}" + fi + exit 0 +fi + # Detectar diretório raiz do superprojeto SUPER_DIR=$(git rev-parse --show-superproject-working-tree 2>/dev/null || true) if [ -z "$SUPER_DIR" ]; then @@ -60,24 +101,28 @@ if [ -f "$SUPER_DIR/.gitmodules" ]; then fi [ -n "$CONV_ID" ] && touch "$LOCK_FILE" 2>/dev/null || true if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then - echo '{"injectSteps":[{"ephemeralMessage":"ℹ️ Submódulo .agent sincronizado com sucesso na branch master (git submodule update --init --recursive --remote)."}]}' + echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️ Submódulo .agent sincronizado com sucesso na branch master (git submodule update --init --recursive --remote).${BUN_STATUS_MSG}\"}]}" else - echo "✅ Submódulo .agent sincronizado com sucesso na branch master." + echo "✅ Submódulo .agent sincronizado com sucesso na branch master.${BUN_STATUS_MSG}" fi exit 0 else if [ "$IS_PIPE" -eq 1 ] && [ -n "$INPUT_JSON" ]; then - echo '{"injectSteps":[{"ephemeralMessage":"⚠️ Não foi possível sincronizar o submódulo .agent com origin/master (sem conexão ou erro de rede). Continuando com versão local."}]}' + echo "{\"injectSteps\":[{\"ephemeralMessage\":\"⚠️ Não foi possível sincronizar o submódulo .agent com origin/master (sem conexão ou erro de rede). Continuando com versão local.${BUN_STATUS_MSG}\"}]}" else - echo "⚠️ Não foi possível sincronizar o submódulo .agent com origin/master. Continuando com versão local." + echo "⚠️ Não foi possível sincronizar o submódulo .agent com origin/master. Continuando com versão local.${BUN_STATUS_MSG}" fi exit 0 fi fi if [ "$IS_PIPE" -eq 1 ]; then - echo "{}" + if [ -n "$INPUT_JSON" ] && [ -n "$BUN_STATUS_MSG" ]; then + echo "{\"injectSteps\":[{\"ephemeralMessage\":\"ℹ️${BUN_STATUS_MSG}\"}]}" + else + echo "{}" + fi else - echo "ℹ️ Nenhum arquivo .gitmodules detectado." + echo "ℹ️ Nenhum arquivo .gitmodules detectado.${BUN_STATUS_MSG}" fi exit 0 diff --git a/validar-setup.sh b/validar-setup.sh index c209765..9809b05 100644 --- a/validar-setup.sh +++ b/validar-setup.sh @@ -75,6 +75,24 @@ if [ -n "$HOST_MODULO_ID" ] && [ -d "$ROOT_DIR/.agent/rules" ]; then fi fi +# Verificar runtime Bun e atualização diária (bun upgrade --stable) +export PATH="$HOME/.bun/bin:$PATH" +if command -v bun >/dev/null 2>&1; then + BUN_STAMP_FILE="/tmp/.antigravity_bun_upgrade_date" + TODAY=$(date +%Y-%m-%d) + LAST_BUN_CHECK=$(cat "$BUN_STAMP_FILE" 2>/dev/null || true) + if [ "$LAST_BUN_CHECK" != "$TODAY" ]; then + if bun upgrade --stable >/dev/null 2>&1; then + echo "$TODAY" > "$BUN_STAMP_FILE" 2>/dev/null || true + fi + fi + BUN_VER=$(bun --version 2>/dev/null || true) + echo -e " ${VERDE}✓${RESET} Runtime Bun verificado (${NEGRITO}v${BUN_VER}${RESET} — check diário: ${NEGRITO}bun upgrade --stable${RESET})." +else + echo -e " ${AMARELO}⚠${RESET} Runtime Bun não encontrado no PATH." + TOTAL_AVISOS=$((TOTAL_AVISOS + 1)) +fi + # 1. Validar memorias-ia/modulo.yml (Pilar 6 - Identidade) MODULO_YML="$ROOT_DIR/memorias-ia/modulo.yml" echo -e "\n${NEGRITO}[1/6] Identidade do Módulo (memorias-ia/modulo.yml)${RESET}"