Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ jobs:
- run: python -m pip install -r scripts/requirements-validation.txt
- run: python scripts/check_bundle.py
- run: python scripts/check_dashboard_pty.py
- run: python scripts/check_workspace_pty.py
8 changes: 8 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,11 @@ Dashboard: ações `e` (contexto/exclusões), `a` (aplicar pacote), `p` (prompt)
`l` (lançar com token) implementadas com prévia e confirmação; `--once` permanece
somente leitura. Contratos em `docs/specs/dashboard.md` e ADR 0017. Cena animada,
exportação de código pela TUI e ensaios humanos pendentes.

TUI unificada: `workspace --demo --project <pasta> --state <pasta-privada>` é
protótipo funcional com eventos sintéticos, persistência e exportação v1 identificada
como `memory-bee-demo`; `--once` não grava. ADR 0018 prioriza esta experiência e
exige lançamento real conjunto Claude/Codex com assinaturas. Protocolo Codex
experimental em `src/workspace/codex.rs` não está ligado à CLI/TUI; integração
real, autenticação e isolamento continuam pendentes. Contrato em
`docs/specs/workspace.md`; teste automatizado adicional `python scripts/check_workspace_pty.py`.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,22 @@ contexto (`e`), aplicação (`a`), gravação de prompt (`p`) e lançamento (`l`
prévia e confirmação explícitas; `--once` imprime um quadro em texto
puro sem precisar de terminal real e sem executar ações. Veja o [contrato do dashboard](docs/specs/dashboard.md).

## TUI unificada experimental

`workspace --demo` demonstra programação na mesma interface Memory Bee: conversa,
menus, permissões, perfis fictícios, histórico persistente e exportação revisável.
**É simulação:** não chama Claude/Codex, não autentica contas e não edita o projeto.

```sh
cargo run --locked -- workspace --demo --project . --state /tmp/bee-demo-state
cargo run --locked -- workspace --demo --project . --once --no-color
```

Contrato e teclas em [workspace](docs/specs/workspace.md). A direção aprovada usa
assinaturas existentes e lançamento real conjunto de Claude e Codex; integração
real e isolamento continuam pendentes ([ADR 0018](docs/decisions/0018-unified-workspace.md)).
O dashboard anterior permanece disponível.

## Desenvolvimento

A toolchain Rust 1.98.1 está fixada em `rust-toolchain.toml`; instale Rust via rustup.
Expand Down
21 changes: 21 additions & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,27 @@ A mesma separação vale para ensaios manuais das entregas seguintes. Veja o
[ADR 0006](docs/decisions/0006-context-export-and-deferred-manual-validation.md)
e o [roteiro manual](docs/MANUAL_TESTS.md). Dependências de código continuam válidas.

## Ajuste de direção — 2026-09-25

O mantenedor aprovou a TUI permanente da Memory Bee, com Claude/Codex executando
por trás, assinaturas existentes e lançamento conjunto. Isso amplia as etapas
05, 06 e 08; a colmeia animada deixa de ser a próxima entrega. Não exige IDE.

1. Protótipo funcional com os dois agentes simulados, menus, streaming,
permissões, erro, persistência e exportação: implementado como `workspace --demo`.
2. Prova real por agente/assinatura, incluindo dois perfis isolados: pendente;
integração Claude com assinatura ainda não confirmada para este produto.
3. Experiência integrada aos dois harnesses, histórico e exportação: pendente.
4. Troca real entre agentes/contas com revisão e preservação da origem: pendente.
5. Lançamento conjunto após todos os aceites, sem substituir o requisito por
API paga separada ou terminal nativo incorporado: pendente.

Aceite real: conversa, edição, execução, permitir/negar, interrupção e retomada
com cada harness; isolamento de dois perfis; exportar após falha/limite; recuperar
histórico sem reenvio; teclado/colagem/resize/sem cor e restauração. Demo e testes
sintéticos não comprovam esses critérios. Veja [ADR 0018](docs/decisions/0018-unified-workspace.md)
e [contrato](docs/specs/workspace.md). HTML sinaliza esta revisão; Markdown prevalece.

## Marcos

| Marco | Etapas | Resultado verificável |
Expand Down
67 changes: 54 additions & 13 deletions docs/EXECUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
## Situação atual

- Existe documentação de produto, workflow e um HTML de planejamento.
- CLI de inspeção, descoberta, seleção e exportação somente contexto implementadas; referência Git opcional implementada; código selecionado v2 implementado; verify/apply explícito implementados; inspeção/exportação Codex por arquivo e descoberta por projeto sob raiz explícita implementadas, experimentais; preparação de retomada Claude/Codex e lançamento confirmado por token implementados, experimentais; dashboard de terminal (ratatui) com lista, detalhe, exportação de contexto/exclusões, aplicação e prompt/lançamento confirmado implementados; cena animada, exportação de código pela TUI e contas pendentes.
- CLI de inspeção, descoberta, seleção e exportação somente contexto implementadas; referência Git opcional implementada; código selecionado v2 implementado; verify/apply explícito implementados; inspeção/exportação Codex por arquivo e descoberta por projeto sob raiz explícita implementadas, experimentais; preparação de retomada Claude/Codex e lançamento confirmado por token implementados, experimentais; dashboard de terminal (ratatui) com lista, detalhe, exportação de contexto/exclusões, aplicação e prompt/lançamento confirmado implementados; workspace unificado disponível apenas com simulação explícita (ADR 0018); cena animada, exportação de código pela TUI e contas reais pendentes.
- Nome decidido: **Memory Bee** (`memory-bee`), com mascote abelha e colmeia dos projetos, conforme o [ADR 0015](decisions/0015-memory-bee-identity.md); crate, binário, pacotes e documentos renomeados para `memory-bee` (registros anteriores mantêm o nome da época). Núcleo em Rust, primeiro alvo macOS arm64 e leitor Claude Code escolhidos. Licença pendente.
- Cargo, toolchain Rust 1.98.1 e checks canônicos definidos no README; CI em macOS/Linux.
- Remoto: [lippdev/memory-pier](https://github.com/lippdev/memory-pier), público, após autorização do mantenedor.
- Remoto atual: [lippdev/memory-bee](https://github.com/lippdev/memory-bee), público.
Em 2026-09-25 o push confirmou redirecionamento da URL local antiga
`lippdev/memory-pier`; links históricos foram preservados.
- Documentação inicial integrada na `main` pelo PR #1.

## Revisão de sequência — orientação do mantenedor
Expand All @@ -26,16 +28,20 @@ de patches e consulta ao Git ficam para a etapa 04.

## Próxima tarefa de produto

**Etapa 06 — Cena da colmeia e revisão de experiência.** Dois recortes funcionais
implementados: leitura e ações confirmadas (exportar contexto, aplicar pacote,
gravar prompt e lançar no mesmo checkout). Próxima entrega: portar a cena aprovada
para módulo puro testável `src/tui/scene.rs`, respeitando redução de movimento,
sem cor e telas estreitas; revisar navegação e legibilidade com dados sintéticos.
Referência Git/código selecionado na exportação e nova worktree permanecem na CLI;
não declarar paridade completa nem certificação real. Sem contas/uso neste recorte.

A renomeação no código está feita (seção "Renomeação — memory-bee"); resta o
remoto GitHub, só com confirmação do mantenedor.
**TUI unificada — prova de integração com assinaturas.** A orientação de
2026-09-25 substitui a prioridade anterior da cena animada: interface permanente
Memory Bee, assinaturas existentes e lançamento real somente com Claude e Codex.
Primeiro recorte `workspace --demo` implementado; não declarar programação real.
Próximo: confirmar a integração Claude elegível e fazer prova controlada de ambos
os harnesses (conversa, edição, execução, permissões, interrupção, retomada e dois
perfis isolados). Protocolo Codex experimental existe, sem conexão à TUI nem
validação real. Não copiar credenciais globais, não substituir assinatura por API
paga e não lançar só um provedor. Ver ADR 0018 e contrato `specs/workspace.md`.
Cena, exportação de código pela TUI e worktree na interface continuam pendentes.

A renomeação no código está feita (seção "Renomeação — memory-bee"). O GitHub
já informa `lippdev/memory-bee`; a URL local antiga redireciona. Não foi feita
renomeação remota nesta retomada.

Compatibilidade real de Claude Code e ensaios de leitura/retomada do pacote estão
pendentes com o mantenedor em [docs/MANUAL_TESTS.md](MANUAL_TESTS.md), sem bloquear
Expand Down Expand Up @@ -538,7 +544,7 @@ Ao começar, registrar a entrega ativa e seus critérios. Ao encerrar, atualizar
- Publicação e verificações remotas vinculadas ao [PR #18](https://github.com/lippdev/memory-pier/pull/18).


### Proposta em discussão — trabalhar dentro da TUI
### Proposta em discussão — trabalhar dentro da TUI (registro histórico)

O mantenedor perguntou sobre manter a interface Memory Bee durante a programação,
usando os harnesses Claude/Codex. Possibilidade técnica pesquisada em 2026-09-25:
Expand All @@ -549,3 +555,38 @@ limites claude.ai, indicando chave de API como caminho padrão. Perfis isolados
continuidade entre provedores exigem desenho e validação próprios. Proposta ainda
não adotada como arquitetura nem implementada; não substitui silenciosamente o
escopo da entrega atual nem a próxima tarefa aprovada.


## TUI unificada — primeiro recorte demonstrável

- Retomada: sessão anterior deixou implementação local sem commit em
`codex/unified-workspace`. A nova sessão preservou e concluiu esse recorte;
o transcript anterior foi consultado somente para recuperar o plano aprovado.
- ADR 0018 registra a mudança de direção: interface própria permanente,
assinaturas existentes e lançamento real conjunto. README, roadmap, aviso
no HTML, AGENTS, contrato e roteiro manual atualizados.
- `workspace --demo`: conversa, eventos incrementais, ferramentas/diff fictícios,
decisões, interrupção/erro, menus, perfis fictícios, sessões persistidas e
exportação com prévia/exclusões/confirmação. Sem `--demo`, recusa antes de escrever.
`--once` só renderiza estado sintético em memória.
- Pacote v1 com fonte `memory-bee-demo`, proveniência de entrada/simulação e
indicação de snapshot parcial. `verify` aceita com avisos; não é sessão nativa.
- Autorrevisão: corrigidas aprovação já resolvida e eventos de turno antigo no
protocolo experimental, symlink pendente no estado, contexto omitido da prévia,
omissão de interrupção no Markdown e controles cortados na entrada estreita.
Sem revisão independente.
- Limites: demo não edita código nem autentica. Protocolo Codex parcial, separado
da TUI; nenhum harness real ou modelo chamado. Perfis não provam isolamento.
Disco síncrono, trava por pasta de estado, recuperação de trava manual após
crash, rascunho/tema não persistidos, projeto único e colmeia estática.
- Validação local macOS: build, fmt e Clippy aprovados; suíte completa de 176
testes aprovada, seguida de 17 testes do workspace após adicionar um teste de
transporte falso (177 testes no total). Pacotes v1/v2 aprovados no validador
Python; PTYs do dashboard e workspace aprovados, incluindo schema do pacote
demo e restauração do terminal. Links Markdown, JavaScript do roadmap,
numeração 1–49/sintaxe shell do roteiro e `git diff --check` conferidos.
CI remota e integração vinculadas ao [PR #19](https://github.com/lippdev/memory-bee/pull/19);
não houve validação com agentes reais.
- Ensaios humanos 46–49 pendentes; não substituídos por testes automatizados.
- Próximo passo: prova de integração descrita no topo. O plano completo permanece
em andamento; integração Claude com assinatura depende de confirmação externa.
76 changes: 76 additions & 0 deletions docs/MANUAL_TESTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -748,3 +748,79 @@ item 40 e registrar versões, autenticação, aceitação do prompt e retorno à
| 43: exportação por teclado, ramo, exclusões e cancelamento | Pendente | — |
| 44: aplicação confirmada e checkout alterado entre prévia/escrita | Pendente | — |
| 45: prompt e lançamento, restauração e agentes reais | Pendente | — |

## 46. Conversa unificada e permissões simuladas (pendente)

```sh
cargo build --locked
mb_workspace_tmp=$(mktemp -d)
mkdir "$mb_workspace_tmp/project"
target/debug/memory-bee workspace --demo --project "$mb_workspace_tmp/project" --state "$mb_workspace_tmp/state" --no-color
```

Enter abre a conversa. Enviar tarefa sintética, abrir F2 durante eventos, Esc
volta com texto digitado preservado. Tab abre permissão: negar, depois repetir
e permitir uma vez. Ctrl+C durante evento/permissão interrompe; aprovação antiga
não pode ser aceita. Enviar `[erro]`: erro aparece sem perder histórico.
Ctrl+Q durante turno exige escolha; Esc cancela. Nenhum arquivo do projeto muda.

Repetir com `--agent codex` e outra pasta `--state`; em estado existente a sessão
persistida prevalece. Esperado: SIMULAÇÃO visível, nenhum login/modelo/processo
Claude ou Codex; ferramentas/diff são fictícios. Não usar conversas ou tokens reais.

## 47. Perfis, contexto e persistência da demo (pendente)

Na sessão do item 46, F2 → `/accounts`: adicionar perfil fictício. Com turno
parado, selecionar outro agente/perfil, revisar passagem com PgDn/Home e digitar
`CONTINUAR`; Esc antes disso preserva origem sem nova sessão. `/sessions` deve
permitir consultar a origem intacta. Perfil não autentica nem modifica conta real.

Sair e executar o mesmo comando: histórico reaparece sem reenviar mensagens.
Segundo processo com mesma pasta deve recusar. Para simular crash, usar apenas
estado descartável e encerrar seu processo abruptamente: conferir que não resta
processo, inspecionar/remover manualmente `workspace.lock`, reabrir e verificar
interrupção registrada. `workspace.new` remanescente também requer inspeção;
não remover arquivos de outra sessão. Corrupção de JSON e projeto diferente devem
recusar preservando os bytes originais. Rascunho/tema não são restaurados.

## 48. Exportar a simulação e revisar origem (pendente)

F2 → `/export`, informar pasta nova absoluta fora do projeto, excluir número de
registro existente (visível entre colchetes), revisar manifesto/Markdown/histórico.
Esc cancela. Repetir e digitar `EXPORTAR`; destino existente deve ser recusado.

```sh
# Substitua pelo destino usado no formulário.
target/debug/memory-bee verify /caminho/do/pacote-demo
```

Esperado: fonte `memory-bee-demo`, aviso de origem desconhecida, marca SIMULAÇÃO,
proveniência `user_input`/`simulated`, omissões das exclusões. Snapshot após erro
ou interrupção é parcial. Nenhum patch ou referência Git inferida. Detector de
segredos bloqueia escrita de suspeitas até exclusão; não promete detectar tudo.

## 49. Terminal e limites de lançamento (pendente)

Testar 100×30, 60×20, 40×12 e 30×10, claro/escuro e `NO_COLOR`. Rolar menus longos,
prévia, colar texto multilinha (não deve enviar), Ctrl+J, Unicode e Backspace.
Entrada curta mantém Enter/F2 acessíveis; abaixo do mínimo há aviso. Sair e
conferir terminal restaurado. A colmeia deste recorte é estática.

```sh
target/debug/memory-bee workspace --demo --project . --agent codex --once --width 40 --height 12 --no-color
# Deve recusar sem criar o estado nem iniciar agente:
target/debug/memory-bee workspace --project . --state /tmp/bee-live-refused
# Automatizado, separado do ensaio humano; requer dependências de validação:
python3 scripts/check_workspace_pty.py
```

Aceite real continua pendente: os dois agentes com assinaturas existentes,
edição/execução real, permitir/negar, interrupção/retomada, exportar após falha/limite
e dois perfis sem mistura. Não interpretar a demo como evidência desses aceites.

| Itens novos | Estado | Evidência manual |
|---|---|---|
| 46: conversa e permissões simuladas | Pendente | — |
| 47: perfis fictícios, contexto, reinício e crash | Pendente | — |
| 48: exportação revisada com proveniência e omissões | Pendente | — |
| 49: terminal, acessibilidade e recusa de modo real | Pendente | — |
Loading
Loading