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 @@ -26,3 +26,4 @@ jobs:
- run: python scripts/check_bundle.py
- run: python scripts/check_dashboard_pty.py
- run: python scripts/check_workspace_pty.py
- run: python scripts/check_claude_native_pty.py
118 changes: 115 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,6 @@ sha2 = "0.10"
regex = "1"
ratatui = "0.30.2"
crossterm = "0.29"
portable-pty = "0.9.0"
vt100 = "0.16.2"
uuid = { version = "1", features = ["serde", "v4"] }
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,22 @@ 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
os logins dos CLIs oficiais como processos locais, com lançamento real conjunto
de Claude e Codex; integração real e isolamento continuam pendentes
([ADR 0018](docs/decisions/0018-unified-workspace.md)).
O primeiro recorte real abre o **Claude Code original** em um PTY dentro da TUI.
Faça login pelo próprio `claude` antes; a Memory Bee não solicita nem armazena
credenciais. Use um projeto e uma pasta de estado explícitos:

```sh
cargo run --locked -- workspace --claude --project . --state /tmp/bee-claude-state
cargo run --locked -- workspace --claude --project . --state /tmp/bee-claude-state --resume
```

`/exit` encerra o Claude; `Ctrl+G` abre ajuda da Memory Bee e `Ctrl+C` vai ao Claude.
A pasta privada guarda apenas IDs de sessão e códigos de saída, enquanto o Claude
mantém a conversa nativa. Este recorte ainda mostra a interface do Claude dentro
da moldura Bee; memória/exportação integrada, perfis isolados e interface de
conversa própria continuam pendentes. Contrato e teclas em
[workspace](docs/specs/workspace.md). O lançamento da experiência completa com
Claude e Codex segue condicionado aos aceites do [ADR 0018](docs/decisions/0018-unified-workspace.md).
O dashboard anterior permanece disponível.

## Desenvolvimento
Expand Down
13 changes: 10 additions & 3 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ por trás, assinaturas existentes e lançamento conjunto. Isso amplia as etapas

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;
hospedar o binário Claude Code original com login do usuário é um caminho
documentado, mas o controle da conversa pela nossa TUI ainda não foi provado.
2. Prova real por agente/assinatura, incluindo dois perfis isolados: em andamento.
`workspace --claude` hospeda o binário Claude Code original em PTY e retoma
seu ID nativo; conversa, permissões e perfis reais ainda exigem ensaio humano.
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
Expand All @@ -52,6 +52,13 @@ uso da assinatura em um produto de terceiros. A prova deve preservar permissões
reais, interrupção, retomada e exportação. Se a interface estruturada Claude não
atender a esse contrato, registrar a lacuna antes do lançamento conjunto.

O mantenedor priorizou a implementação nativa **Claude primeiro**. O PTY com
sessão nativa é a primeira entrega desse caminho, disponível como modo experimental;
não altera o aceite do lançamento conjunto da experiência completa. O próximo
recorte deve ligar histórico/exportação revisável e ações à sessão Claude, além
de validar o fluxo real de conversa e permissões. O HTML ainda representa o plano
visual anterior; este Markdown e o ADR 0018 prevalecem para a sequência.

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
Expand Down
56 changes: 36 additions & 20 deletions docs/EXECUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
## 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; 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.
- 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 com demo explícita e primeiro modo Claude local sobre CLI oficial/PTY, experimental (ADR 0018); cena animada, exportação nativa pela TUI e perfis 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 atual: [lippdev/memory-bee](https://github.com/lippdev/memory-bee), público.
Expand All @@ -28,25 +28,19 @@ de patches e consulta ao Git ficam para a etapa 04.

## Próxima tarefa de produto

**Refinamento visual — próxima entrega local.** A orientação mais recente do
mantenedor autoriza a frente visual em paralelo à prova dos harnesses. Referência
HTML e [plano visual](specs/workspace-visual.md) concluídos; próximo recorte:
renderizador Rust com abelha à direita do campo amarelo e estados por ação,
seguido da conexão aos eventos da demo. Não iniciar esse porte na entrega
restrita ao protótipo/plano. Exportação e troca de agente ainda precisam de
animações próprias.

**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: provar a hospedagem do CLI Claude original autenticado pelo próprio
usuário e fazer prova controlada de ambos os processos (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, 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.
**Claude nativo primeiro — próxima entrega de produto.** O mantenedor priorizou
Claude antes de Codex. `workspace --claude` já hospeda a CLI original em PTY,
com sessão nativa, entrada/saída interativa e retomada por ID; é experimental.
Próximo: ensaio humano de conversa, edição, execução, permitir/negar, interrupção
e retomada com assinatura existente; ligar histórico/exportação revisável e ações
da Memory Bee à sessão Claude. O modo atual guarda apenas IDs, não a memória.
Perfis reais, interface de conversa própria e Codex integrado permanecem pendentes.
O lançamento da experiência completa ainda exige os dois agentes (ADR 0018).

**Refinamento visual.** Referência HTML e [plano visual](specs/workspace-visual.md)
concluídos; renderizador Rust, abelha por ação e animações de exportação/troca
permanecem pendentes. O HTML apresenta o plano visual anterior à prioridade
Claude primeiro; este registro e o roadmap Markdown prevalecem.

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
Expand Down Expand Up @@ -637,3 +631,25 @@ escopo da entrega atual nem a próxima tarefa aprovada.
Autorrevisão; nenhuma revisão independente ou chamada a modelo nesta revisão.
- Próximo: ensaio controlado com os CLIs oficiais em ambiente explícito, cobrindo
conversa, eventos, permissões e interrupção antes de integrar à tela.

## Claude Code local na TUI — primeiro recorte nativo

- Escopo: `workspace --claude --project <dir> --state <pasta>` abre o Claude Code
instalado em PTY, usando autenticação e permissões da CLI original. A Memory
Bee encaminha entrada/colagem/resize e desenha a saída; `--resume` reutiliza o
último ID nativo. Estado separado guarda só IDs e códigos de saída, com pasta
privada e trava. Demo e dashboard anteriores continuam disponíveis.
- Evidências: `cargo fmt --all -- --check`, `cargo clippy --locked --all-targets
-- -D warnings`, `cargo test --locked`, `cargo build --locked`,
`python3 scripts/check_claude_native_pty.py`, links relativos e
`git diff --check` passaram localmente. Teste sintético exercitou CLI falsa,
entrada, retomada, privacidade, recusa sem TTY e restauração. Ensaio controlado
iniciou e encerrou o Claude instalado com `/exit`, sem enviar prompt/modelo;
não comprova fluxo de conversa nem permissões. CI macOS/Linux configurado para
repetir o teste sintético.
- Autorrevisão de escopo, armazenamento e fronteira de autenticação; sem revisão
independente. Ensaio manual 51 pendente. Não há ainda exportação integrada,
eventos estruturados, UI de conversa própria, perfis isolados nem Codex real.
- Próximo: executar o roteiro 51 com conversa/permissões reais e vincular a sessão
Claude ao histórico/exportação revisável, mantendo origem e omissões explícitas.
Lançamento completo com ambos os agentes permanece pendente.
30 changes: 30 additions & 0 deletions docs/MANUAL_TESTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -839,3 +839,33 @@ histórico. Após inatividade, digitar acorda. Conferir movimento desligado, sem
cor, tema claro/escuro, larguras 140/100/60/40 e janela estreita. A cena inicial
continua disponível. Nenhum teste, arquivo ou agente real é executado pelo HTML.
Esse roteiro não valida o renderizador Rust, ainda pendente.

## 51. Claude Code nativo dentro da Memory Bee (pendente)

Em um projeto descartável, faça login primeiro pelo Claude Code original e
confirme que ele funciona fora da Memory Bee. Depois rode:

```sh
cargo build --locked
mkdir -p /tmp/bee-claude-project
target/debug/memory-bee workspace --claude --project /tmp/bee-claude-project --state /tmp/bee-claude-state
target/debug/memory-bee workspace --claude --project /tmp/bee-claude-project --state /tmp/bee-claude-state --resume
```

Na primeira sessão, enviar tarefa simples, observar resposta e, só no projeto
descartável, pedir uma edição/execução que solicite permissão. Ensaiar **Negar** e
**Permitir** separadamente. Verificar `Ctrl+C` durante resposta, colagem,
redimensionamento, `Ctrl+G` e `/exit`; conferir restauração do terminal. Na
segunda chamada, verificar que a conversa nativa retorna sem reenviar o prompt.
Conferir `claude-native.json` e permissões 0700/0600, sem registrar conta, tokens
ou conteúdo da conversa no repositório. Estado com outro projeto e chamada sem
TTY devem ser recusados. Anotar versão do Claude, resultado de cada ação e se
houve uso da assinatura já autenticada.

O teste automatizado sintético, sem login/modelo, é
`python3 scripts/check_claude_native_pty.py`; aprovação nele não conclui este
ensaio. Exportação da memória pelo modo nativo e perfis isolados seguem pendentes.

| Item novo | Estado | Evidência manual |
|---|---|---|
| 51: conversa, permissões, interrupção e retomada Claude reais | Pendente | — |
Loading
Loading