Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
83849f9
feat(security): rate-limit public share endpoint + security headers (…
DavidsonGomes Apr 25, 2026
bca4ed0
feat(plugins): B2.0 public_pages capability — read-only token-bound p…
DavidsonGomes Apr 25, 2026
b5a2948
feat(plugins): B3 safe_uninstall — 3-step wizard, orphan table preser…
DavidsonGomes Apr 25, 2026
b7ce9aa
feat(plugins): writable_data requires_role + readonly_data current_us…
DavidsonGomes Apr 25, 2026
2b11701
feat(plugins): public_pages content negotiation — HTML shell for brow…
DavidsonGomes Apr 25, 2026
4511281
release: v0.33.0 — plugin contract bundle + install error surfacing (…
DavidsonGomes Apr 26, 2026
a567fd4
feat(providers): chat tool-calling via openclaude + explicit provider…
sistemabritto Jun 12, 2026
7224be3
fix(providers): derive NVIDIA_API_KEY for NVIDIA NIM base URLs
sistemabritto Jun 12, 2026
16eefb1
feat(providers): NVIDIA NIM image generation + hardening fixes
sistemabritto Jun 12, 2026
1525431
chore(deps): sync uv.lock with pyproject (flask-limiter)
sistemabritto Jun 12, 2026
f434803
feat(chat): rate-limited fetch with retry/backoff for OpenAI-compatib…
sistemabritto Jun 12, 2026
bf63d06
fix(dashboard): auto-reconnect agent terminal/chat WebSocket
sistemabritto Jun 12, 2026
dcacb4a
feat(terminal): conversation resume + per-tier agent models + provide…
sistemabritto Jun 12, 2026
afda74c
fix(dashboard): /costs page crash on image cost entries without token…
sistemabritto Jun 13, 2026
313a6ae
feat(skills): OpenAI Images API provider (gpt-image-2) in ai-image-cr…
sistemabritto Jun 13, 2026
d30e26e
docs(terminal): codexplan comment reflects gpt-5.5 mapping in opencla…
sistemabritto Jun 13, 2026
c8b722f
feat(dashboard): gpt-image-2 pricing with split token billing in imag…
sistemabritto Jun 13, 2026
abc351d
chore(gitignore): exclude private root workspace dirs, backups, and c…
sistemabritto Jun 13, 2026
dc729d9
feat(heartbeats): in-process handlers + provider fallback engine foun…
sistemabritto Jun 13, 2026
9cde198
feat(skills): int-evohub integration + social-ai-trends-blog pipeline
sistemabritto Jun 13, 2026
fdafd3c
feat(heartbeats): wire provider_fallback into the runner
sistemabritto Jun 14, 2026
e355f13
feat(telegram): route the Telegram bot through Codex (GPT-5.5)
sistemabritto Jun 14, 2026
f7b942f
Fix provider routing and Telegram memory
sistemabritto Jun 14, 2026
4e97443
Add Telegram audio transcription via Groq
sistemabritto Jun 14, 2026
307d151
Make Telegram Codex override strict
sistemabritto Jun 14, 2026
94be24a
Stabilize Telegram Codex responses
sistemabritto Jun 14, 2026
5cdc06c
Use native Codex exec for Telegram
sistemabritto Jun 14, 2026
f5b2747
Fix Telegram prompt truncation
sistemabritto Jun 14, 2026
3ca8d34
Stop legacy Telegram pollers
sistemabritto Jun 14, 2026
5eb8a69
Enable X OAuth posting credentials
sistemabritto Jun 14, 2026
0721c10
Fix local social auth OAuth callback
sistemabritto Jun 14, 2026
91d3761
feat: NVIDIA 12-model fallback chain + per-model inflight lock + uso_…
sistemabritto Jun 16, 2026
65dbab2
fix: remove deepseek-v4-pro, fix OpenRouter fallback, add success rep…
sistemabritto Jun 16, 2026
fdeb5ca
chore: health report + self-heal goal
sistemabritto Jun 16, 2026
bd6ddc0
feat: centralized notifications + hourly reports + approval queue
sistemabritto Jun 16, 2026
73ed711
fix: notifications.py WORKSPACE path (parent.parent → parent.parent.p…
sistemabritto Jun 16, 2026
6c6ac93
fix: heartbeat Telegram notification wrapper
sistemabritto Jun 16, 2026
e4f1290
feat: NVIDIA model chain for Telegram and heartbeat fallback
sistemabritto Jun 16, 2026
75eea3c
fix: heartbeat fallback noise and provider fallback
sistemabritto Jun 16, 2026
715ccd7
fix: telegram ghost workspace context
sistemabritto Jun 16, 2026
d323727
fix: treat successful CLI JSON as heartbeat success
sistemabritto Jun 16, 2026
dbc6ae2
feat: heartbeat progress preview in Telegram reports
sistemabritto Jun 16, 2026
2337a38
fix: mount social auth oauth routes on dashboard
sistemabritto Jun 16, 2026
e33b8b7
feat(instagram): publicação e leitura via Instagram Login (graph.inst…
sistemabritto Jun 17, 2026
ff8693f
feat(heartbeats): notificação por resultado/bloqueio, kanban real e o…
sistemabritto Jun 17, 2026
97785b5
fix(scheduler): uma rotina com horário inválido não derruba mais o sc…
sistemabritto Jun 17, 2026
80e360d
fix(dashboard): remove import não usado que quebrava o build do frontend
sistemabritto Jun 17, 2026
32115e0
feat(heartbeats): estrutura outcome via NVIDIA json_schema + fix auth…
sistemabritto Jun 18, 2026
f8725eb
fix(orchestrator): processar só tickets 'open' e acelerar p/ 5min
sistemabritto Jun 18, 2026
4669c65
chore(heartbeats): habilita nexus-orchestrator no YAML (fonte p/ deploy)
sistemabritto Jun 18, 2026
bc0ecd3
feat(goals): ticket resolvido avança a goal vinculada
sistemabritto Jun 18, 2026
7370203
feat(orchestrator): avançar review/in_progress até resolved com guard…
sistemabritto Jun 18, 2026
7549f7e
feat: inbox reconhece 'review' + action de publish no Docker Hub próprio
sistemabritto Jun 18, 2026
35d13c6
fix(telegram): ler URLs e parar de confundir texto colado com pergunt…
sistemabritto Jun 18, 2026
9695de9
Create docker-image.yml
sistemabritto Jun 18, 2026
0c553ea
feat(telegram): ponte de desbloqueio de tickets por reply
sistemabritto Jun 18, 2026
6c9ca42
deploy: add EvoNexus VPS swarm stack
sistemabritto Jul 4, 2026
feb9267
fix: clone existing Brain Repo on connect
sistemabritto Jul 4, 2026
03d8e9c
fix: improve backup persistence and brain repo detection
sistemabritto Jul 4, 2026
ed9560f
fix: configure git identity for brain repo commits
sistemabritto Jul 4, 2026
abfcf3c
fix(backup): snapshot SQLite consistente via Online Backup API
sistemabritto Jul 5, 2026
8194ea2
fix(backups): status de restore visível e app context na thread
sistemabritto Jul 5, 2026
963e732
fix(docker): incluir backup.py na imagem do dashboard
sistemabritto Jul 5, 2026
acf3e07
fix(backup): remover -wal/-shm órfãos ao restaurar SQLite
sistemabritto Jul 5, 2026
0fbf787
feat(swarm): persistir /workspace/.claude em volume com re-seed no boot
sistemabritto Jul 5, 2026
1fcd738
feat(telegram): bot no Swarm via proxy LiteLLM -> NVIDIA NIM
sistemabritto Jul 5, 2026
45af524
fix(docker): incluir config/litellm-telegram.yaml no build context
sistemabritto Jul 5, 2026
02249ae
fix(telegram): IS_SANDBOX=1 e restore do .claude.json no wrapper
sistemabritto Jul 5, 2026
d7d4760
fix(telegram): forçar flags de onboarding no .claude.json restaurado
sistemabritto Jul 5, 2026
66880cb
fix(telegram): pré-aceitar trust dialog do /workspace no wrapper
sistemabritto Jul 5, 2026
c4b4d55
fix(telegram): instalar o plugin do canal no primeiro boot
sistemabritto Jul 5, 2026
416570d
fix(docker): adicionar bun à imagem runtime (canal telegram exige)
sistemabritto Jul 5, 2026
fa0f44f
fix(swarm): aceitar trust do /workspace e IS_SANDBOX nos entrypoints
sistemabritto Jul 5, 2026
7c39e3f
fix(telegram): mesclar TELEGRAM_CHAT_ID na allowlist a cada boot
sistemabritto Jul 5, 2026
ad3cbc8
fix(swarm): restaurar backup do .claude.json antes de seedar no entry…
sistemabritto Jul 5, 2026
d07d910
feat(telegram): modo direto Anthropic quando há login claude.ai no vo…
sistemabritto Jul 5, 2026
22a4f9a
fix(docker): incluir docs/ na imagem do dashboard
sistemabritto Jul 5, 2026
00f5860
fix(providers): support omnirouter terminal and codex callback
sistemabritto Jul 6, 2026
40c331c
fix(providers): use codex cli for device auth
sistemabritto Jul 6, 2026
34fd877
fix(terminal): auto trust openclaude and recover eio
sistemabritto Jul 7, 2026
3f9dddc
fix(terminal): suppress eio error surface
sistemabritto Jul 7, 2026
c8fa387
fix(terminal): resolver EIO no ominirouter com providers NVIDIA
sistemabritto Jul 7, 2026
389a0e0
fix(terminal): openclaude v0.22 root permissions + node-pty exitCode …
sistemabritto Jul 7, 2026
248a7b2
fix(terminal): IS_SANDBOX=1 no spawn para bypass de permissões como root
sistemabritto Jul 7, 2026
d54b66d
fix(telegram): modo provider como default no Swarm — canal não morre …
sistemabritto Jul 7, 2026
756eb15
fix(terminal): não reutilizar sessão com viewer ativo no for-agent
sistemabritto Jul 7, 2026
86d76ca
fix(telegram): forçar TELEGRAM_MODE=provider na stack VPS
sistemabritto Jul 7, 2026
47d3f1e
docs(swarm): stack de exemplo compartilhável para VPS/Portainer
sistemabritto Jul 7, 2026
4d4036f
feat(swarm): serviço opcional OmniRoute na stack de exemplo
sistemabritto Jul 7, 2026
067cf97
feat(swarm): OmniRoute na stack pessoal VPS em omni.workflowapi.com.br
sistemabritto Jul 7, 2026
2801f69
fix(omniroute): auth nativa do dashboard em vez de basic-auth do Traefik
sistemabritto Jul 7, 2026
e57ed27
docs(omniroute): remover referências obsoletas ao basic-auth na stack…
sistemabritto Jul 7, 2026
9664394
fix(providers): chave do provider vence o env global — omnirouter não…
sistemabritto Jul 7, 2026
0b787fd
docs(readme): README do Omni-Nexus — camada de upgrade sobre o EvoNexus
sistemabritto Jul 7, 2026
e45e805
merge: camada Omni-Nexus na main — OmniRoute, provider selector, Tele…
sistemabritto Jul 7, 2026
2f71f0f
fix(ci): runtime da main builda o Dockerfile.swarm, não o Dockerfile …
sistemabritto Jul 7, 2026
7e21cd2
fix(telegram): stream=false no chat completion + parser tolerante a SSE
sistemabritto Jul 7, 2026
fd50ebc
docs(omniroute): prompt de configuração assistida por agente
sistemabritto Jul 7, 2026
d11d6b0
feat(memory): MemPalace persistente na VPS + protocolo de recall/self…
sistemabritto Jul 8, 2026
2201009
fix(mempalace): status de mining preso em 100% — worker zumbi passava…
sistemabritto Jul 8, 2026
b644748
feat(provider): opencode as a first-class provider
sistemabritto Jul 14, 2026
edfc477
feat(provider): opencode REPL bridge + real provider-fallback resilience
sistemabritto Jul 14, 2026
26ff34d
feat(hud): car-dashboard status panel for Terminal and Chat
sistemabritto Jul 14, 2026
ed1e51e
fix(heartbeats,routines): success_rate unit mismatch + heartbeats sta…
sistemabritto Jul 14, 2026
608d167
fix(dashboard): OAuth callbacks failing behind a reverse proxy
sistemabritto Jul 14, 2026
2d720e4
fix(scheduler): erro no routines.yaml não derruba mais o processo int…
sistemabritto Jul 14, 2026
172943f
fix(entrypoint): gate de boot travava esperando ANTHROPIC_API_KEY mes…
sistemabritto Jul 14, 2026
76b539a
fix(entrypoint): .env com DASHBOARD_API_TOKEN vazio apagava o valor d…
sistemabritto Jul 14, 2026
c1c70b7
docs(env): comenta DASHBOARD_API_TOKEN vazio no .env.example (defesa …
sistemabritto Jul 14, 2026
efa1cce
fix(entrypoint): generaliza o guard de env var clobbered — achei uma …
sistemabritto Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions .claude/rules/memory-recall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Memory Recall & Self-Learning — Protocolo dos Agentes

Sessões são efêmeras (`/clear`, redeploys, novos terminais); memória não pode
ser. Este protocolo garante que todo agente **recupere contexto no início** e
**persista aprendizados no final** — o ciclo de self-learning do workspace.

## 1. Recall — no início de toda sessão/tarefa

Antes de trabalhar, recupere contexto nesta ordem (barato → caro):

1. **Hot cache** — `CLAUDE.md` já está no contexto (automático).
2. **Memória do agente** — leia `.claude/agent-memory/{seu-agente}/` (em
especial `MEMORY.md` / `learnings.md` se existirem). É a SUA memória entre
sessões; se o diretório está vazio, você é novo — comece a populá-lo.
3. **Busca semântica (MemPalace)** — quando o assunto tem histórico provável,
consulte a base de conhecimento:

```python
from dashboard.backend.sdk_client import evo
hits = evo.get("/api/mempalace/search", params={"q": "deploy VPS omniroute", "n": 5})
```

Indexa `memory/`, `.claude/agent-memory/` e `workspace/development/` —
decisões, incidentes, retros e aprendizados de TODOS os agentes.
4. **Inbox de tickets (kanban)** — trabalho persistente atribuído a você:

```python
abertos = evo.get("/api/tickets", params={"assignee_agent": "{seu-slug}", "status": "open"})
```

Ticket relevante ao assunto atual → faça checkout atômico antes de agir
(`POST /api/tickets/{id}/checkout`) e comente o progresso.

**Regra prática:** se o usuário mencionar algo que soa como já discutido
("aquele bug", "como fizemos antes", "o problema do X"), consulte o MemPalace
ANTES de dizer que não sabe.

## 2. Self-learning — ao final de toda tarefa não-trivial

Persista o que a próxima sessão vai precisar:

1. **Aprendizado do agente** — acrescente em
`.claude/agent-memory/{seu-agente}/learnings.md` (crie se não existir):

```markdown
## 2026-07-07 — Bot Telegram 401 com omnirouter
**O que aconteceu:** chave NVIDIA do env sequestrava chamadas ao gateway.
**Lição:** chave do provider em providers.json SEMPRE vence o env global.
**Aplicar quando:** qualquer 401 em provider OpenAI-compatível.
```

Formato livre, mas sempre com **lição** e **quando aplicar**. Datas
absolutas, nunca "hoje/ontem".
2. **Fato do workspace** (afeta outros agentes ou o negócio) → registre em
`memory/` seguindo o padrão LLM Wiki (ver seção Memory System do
CLAUDE.md); a rotina memory-sync propaga.
3. **Trabalho inacabado** → vira ticket (`POST /api/tickets`), nunca só uma
nota na conversa. Conversa morre; ticket fica no kanban.
4. **Reindexar** — os arquivos novos entram na busca semântica no próximo
mine. Depois de gravar aprendizados importantes, dispare:

```python
evo.post("/api/mempalace/mine") # indexa todas as fontes (idempotente)
```

## 3. O que NUNCA fazer

- Não confie que "a sessão anterior sabe" — ela não existe mais após /clear.
- Não duplique: antes de criar memória nova, busque se já existe (atualize o
arquivo existente em vez de criar outro).
- Não guarde segredos (keys, tokens, senhas) em memórias ou learnings.
- Não salve o que o repositório já registra (código, git history, CLAUDE.md).

## Infraestrutura (referência)

| Peça | Onde | Persistência |
|---|---|---|
| MemPalace (índice chroma + fontes) | `dashboard/data/mempalace/` | volume `evonexus_dashboard_data` |
| Memória dos agentes | `.claude/agent-memory/` | volume `evonexus_agent_memory` |
| Memória do workspace | `memory/` | volume `evonexus_memory` |
| Tickets/kanban | SQLite `dashboard.db` | volume `evonexus_dashboard_data` |

API MemPalace: `GET /api/mempalace/status` · `GET /api/mempalace/search?q=&n=` ·
`POST /api/mempalace/mine` · fontes em `GET/POST /api/mempalace/sources`.
O pacote vem pré-instalado na imagem do dashboard; fontes padrão são seedadas
no primeiro uso.

## Regras relacionadas

- `tickets.md` — inbox, checkout atômico, menções
- `agents.md` — agent-memory por agente, EvoClient
- `heartbeats.md` — heartbeats consomem o mesmo inbox
19 changes: 19 additions & 0 deletions .claude/skills/ai-image-creator/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,23 @@ When the user mentions a model keyword in their image request, use the correspon
| `flux2` | [FLUX.2 Max](https://openrouter.ai/black-forest-labs/flux.2-max) | "flux2", "flux", "use flux" |
| `seedream` | [ByteDance SeedDream 4.5](https://openrouter.ai/bytedance-seed/seedream-4.5) | "seedream", "use seedream" |
| `gpt5` | [OpenAI GPT-5 Image](https://openrouter.ai/openai/gpt-5-image) | "gpt5", "gpt5 image", "use gpt5" |
| `nvidia-flux2-klein-4b` | BFL FLUX.2 Klein 4B via NVIDIA NIM (default for `--provider nvidia`) | "nvidia", "flux nvidia", "nvidia flux2" |
| `nvidia-flux-dev` | BFL FLUX.1-dev via NVIDIA NIM (30 steps, high quality) | "nvidia flux dev" |
| `nvidia-flux-schnell` | BFL FLUX.1-schnell via NVIDIA NIM (4 steps, fastest) | "nvidia schnell", "flux rápido" |
| `image2` | OpenAI GPT Image 2 via Images API direta (default for `--provider openai`) | "image2", "gpt image 2", "imagem openai" |

**OpenAI Images API notes (`image2`):**
- Requires a **platform API key** (`AI_IMG_CREATOR_OPENAI_KEY` or `OPENAI_API_KEY`, billing on platform.openai.com).
- **ChatGPT Plus / Codex OAuth tokens CANNOT generate images** — they lack the `api.model.images.request` scope (verified: API returns 401). Do not suggest the Codex login as an image path.
- `-a` maps to the supported sizes (1024x1024, 1536x1024, 1024x1536). `--image-size`, `-r` (reference images) and `--analyze` are not supported on this provider.
- Excellent text rendering (including Portuguese accents) — good choice for text-critical art.

**NVIDIA NIM notes:**
- Free tier with generous credits — good fallback when OpenRouter hits rate limits.
- Generation is fast (~2-5s). Output is JPEG, auto-converted to PNG via ImageMagick/ffmpeg.
- Dimensions are restricted (768-1344 per side, ≤1.06MP total) — `-a` maps to the closest supported size. `--image-size` is not supported.
- Text rendering (especially Portuguese accents like Ç/Ã) is hit-or-miss on all FLUX variants — for text-critical art, generate 2-3 candidates and pick, or use `gemini`/`gpt5` which render text reliably.
- Reference images (`-r`) and `--analyze` are not supported on the NVIDIA provider.

## Instructions

Expand Down Expand Up @@ -99,6 +116,7 @@ The script auto-loads env vars from the workspace `.env`. Choose provider based
- If `AI_IMG_CREATOR_CF_ACCOUNT_ID` + `AI_IMG_CREATOR_CF_GATEWAY_ID` + `AI_IMG_CREATOR_CF_TOKEN` are set → use default (gateway mode, no flag needed)
- If only `AI_IMG_CREATOR_OPENROUTER_KEY` is set → use default (`--provider openrouter`, implicit)
- If only `AI_IMG_CREATOR_GEMINI_KEY` is set → use `--provider google`
- If `NVIDIA_API_KEY` is set → `--provider nvidia` is available (FLUX models, free tier). Auto-selected when the model keyword starts with `nvidia-`
- **Do NOT use `source .env`** — the Python script loads it internally. Just run the command directly.

### Step 2: Run Generation Script
Expand Down Expand Up @@ -193,6 +211,7 @@ If the user needs resizing, format conversion, or other manipulation, first dete
| `AI_IMG_CREATOR_CF_TOKEN` | Gateway mode | Gateway auth token |
| `AI_IMG_CREATOR_OPENROUTER_KEY` | Direct OpenRouter | OpenRouter API key (`sk-or-...`) |
| `AI_IMG_CREATOR_GEMINI_KEY` | Direct Google | Google AI Studio API key |
| `NVIDIA_API_KEY` | NVIDIA NIM | NVIDIA API key (`nvapi-...`) — same key used by the dashboard NVIDIA provider |

Gateway mode activates when all 3 `CF_*` vars are set. Falls back to direct mode if gateway fails.

Expand Down
Loading