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
23 changes: 15 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ sintéticas. Etapa 03 implementada para exportação somente de contexto, com pr
exclusões e manifesto v1. Validação manual e compatibilidade real pendentes. Etapa
04 iniciada: `export --project <pasta>` registra referência Git local; `--include-path <arquivo>` inclui alterações textuais selecionadas em pacote v2. `verify` confere pacotes e `apply --check` / `--write` verifica ou aplica explicitamente em checkout limpo com base exata. Etapa 06 em andamento: `dashboard`
implementado com lista, detalhe, exportação de contexto, aplicação de pacotes e
retomada confirmada; cena animada e ensaios humanos pendentes.
retomada confirmada; a TUI unificada tem demo e um modo Claude real experimental
(abaixo). Cena animada, Codex real no workspace e ensaios humanos pendentes;
situação detalhada em [docs/EXECUTION.md](docs/EXECUTION.md).

```sh
cargo run --locked -- inspect testdata/claude/basic.jsonl
Expand Down Expand Up @@ -83,13 +85,18 @@ cargo run --locked -- workspace --claude --project . --state /tmp/bee-claude-sta
cargo run --locked -- workspace --claude --project . --state /tmp/bee-claude-state --resume
```

Enter envia mensagem, `Ctrl+C` interrompe e `Ctrl+Q` sai. Quando Claude pedir
permissão, `y` permite uma vez e `n` nega; sem resposta a ponte nega.
A pasta privada guarda apenas IDs de sessão e códigos de saída, enquanto o Claude
mantém a conversa nativa. A interface antiga dentro da moldura continua disponível
para diagnóstico com `--claude-terminal`. A nova tela Bee é funcional, mas ainda
experimental: exportação integrada, perfis isolados, histórico completo na tela
e refinamento visual continuam pendentes. Contrato e teclas em
Enter envia; `Alt+Enter` (ou `Ctrl+J`) quebra linha e a colagem nunca é enviada
sozinha. `PgUp`/`PgDn` rolam a conversa, `Esc` volta ao fim, `Ctrl+C` interrompe e
`Ctrl+Q` sai sem digitar em diálogos nativos. Quando Claude pedir permissão, `y`
permite uma vez e `n` nega; sem resposta em 85 s a ponte nega. Cada ação mostra se
foi aprovada na Bee ou liberada pelas regras do próprio Claude. Telas nativas sem
evento (confiança, login) são sinalizadas e concluídas com `Ctrl+O`. Na retomada,
o histórico é relido da transcrição do Claude sem reenviar nada; `Ctrl+E` prevê e
exporta a sessão como pacote verificável. A pasta privada guarda apenas IDs e
códigos de saída, com trava liberada até em `kill -9`. A interface antiga dentro
da moldura continua disponível para diagnóstico com `--claude-terminal`. Tudo isso
é experimental e só foi provado com CLI falsa: ensaio com conta real, perfis
isolados e refinamento visual 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.
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ Preparar lançamento público após o marco escolhido.
| Decisão | Encaminhamento |
|---|---|
| Stack e primeiro SO | Decidido: Rust, macOS arm64 primeiro; ver [ADR 0004](docs/decisions/0004-rust-stack.md). |
| Primeiro leitor | Claude Code com descoberta por projeto e seleção de ramo em fixtures sintéticas; compatibilidade real pendente. Codex com inspeção experimental por arquivo explícito; exportação/descoberta pendentes. |
| Primeiro leitor | Claude Code com descoberta por projeto e seleção de ramo em fixtures sintéticas; compatibilidade real pendente. Codex com inspeção, exportação e descoberta sob raiz explícita, experimentais; compatibilidade real pendente. |
| Contrato do pacote | Exportador somente contexto v1 implementado; referência Git e exportação de alterações selecionadas v2 implementadas; verificação e aplicação explícita implementadas em checkout limpo/base exata; ensaios manuais pendentes. |
| Uso e limites | Repositório de referência prometido pelo mantenedor ainda não foi fornecido. Não bloquear M1 por isso. |
| Contas | Investigar isolamento e login oficial por ferramenta. Não prometer suporte universal. |
Expand Down
13 changes: 12 additions & 1 deletion docs/EXECUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ substituída pela revisão de sequência do mantenedor registrada acima.
| 03 Exportação revisável | P0 | Em andamento | Exportador somente contexto com prévia, exclusões e testes implementado; ensaios manuais de pacote/retomada pendentes. |
| 04 Estado do código | P0 | Em andamento | Referência Git, código selecionado, verify e apply explícito implementados; ensaios manuais/M1 pendentes. |
| 05 Troca de agente | P1 | Em andamento | Inspeção/exportação Codex, descoberta, preparação de retomada e lançamento confirmado implementados, experimentais; validação real com os agentes pendente (itens 38–40). |
| 06 Dashboard terminal | P1 | Em andamento | Leitura e ações confirmadas implementadas; cena, exportação de código pela TUI e ensaios humanos pendentes. |
| 06 Dashboard terminal | P1 | Em andamento | Dashboard com leitura e ações confirmadas; workspace demo; Claude oculto experimental com prompts nativos via `Ctrl+O`, origem das ações, histórico/exportação, editor multilinha e recuperação após falha (#29–#32, #41). Cena, exportação de código pela TUI, Codex real e ensaios humanos (itens 42–55) pendentes. |
| 07 Uso e alertas | P1 | Pendente | Depende de 01 e 06; falta referência de consumo. |
| 08 Perfis de conta | P1 | Pendente | Depende de 05–06 e prova de isolamento. |
| 09 Captura contínua | P2 | Pendente | Depende de 02–06. |
Expand Down Expand Up @@ -895,3 +895,14 @@ escopo da entrega atual nem a próxima tarefa aprovada.
Autorrevisão.
- Limitações: sistemas de arquivos de rede não suportados; versões antigas não
respeitam a trava nova; persistência continua síncrona.

## Documentação — status sincronizado (#42)

- Data: 2026-09-28. README (estado e teclas do Claude oculto), tabela de
decisões do ROADMAP (Codex exporta e descobre, experimental), status da etapa
06 nesta tabela e roadmap HTML passam a descrever a mesma situação. O HTML
deixou de marcar todas as etapas após a 01 como "Planejado": cada selo repete
a tabela "Status do roadmap" acima. Histórico de decisões preservado; nenhum
ensaio manual declarado como feito.
- Evidências: `node --check` do script do HTML, links relativos conferidos,
`git diff --check`. Autorrevisão.
9 changes: 5 additions & 4 deletions docs/roadmap/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
</style>
</head>
<body><main>
<p><strong>Revisão de 2026-09-25:</strong> o plano agora prioriza uma TUI permanente com Claude/Codex e assinaturas existentes, com lançamento real conjunto. O protótipo <code>workspace --demo</code> é simulação. As etapas visuais abaixo ainda não incorporam integralmente essa ampliação; consulte <a href="../../ROADMAP.md">ROADMAP.md</a> e o <a href="../specs/workspace.md">contrato do workspace</a>.</p>
<header><div class="eyebrow">Plano de produto / 23 set 2026 / versão 01</div><h1>O trabalho continua.<br>O agente pode mudar.</h1><p class="lead">Um painel no terminal para encontrar conversas, acompanhar disponibilidade e passar um trabalho para outro agente, outra conta ou outra pessoa.</p><p class="muted">Nome escolhido: Memory Bee. Este HTML é o plano de implementação, não a dashboard funcional. Núcleo escolhido: Rust; primeiro leitor Claude Code em macOS arm64.</p><p class="muted">Atualização de execução: referência Git opcional implementada na exportação (--project). Exportação de código selecionado implementada (--include-path, pacote v2); verify e apply explícito implementados para checkout limpo/base exata; dashboard com exportação de contexto, aplicação e retomada confirmada implementadas; cena animada e ensaios manuais pendentes; consulte docs/EXECUTION.md para evidências.</p></header>
<p><strong>Revisão de 2026-09-25 (estado atualizado em 2026-09-28):</strong> o plano agora prioriza uma TUI permanente com Claude/Codex e assinaturas existentes, com lançamento real conjunto. O protótipo <code>workspace --demo</code> é simulação. As etapas visuais abaixo ainda não incorporam integralmente essa ampliação; consulte <a href="../../ROADMAP.md">ROADMAP.md</a> e o <a href="../specs/workspace.md">contrato do workspace</a>.</p>
<header><div class="eyebrow">Plano de produto / 23 set 2026 / versão 01</div><h1>O trabalho continua.<br>O agente pode mudar.</h1><p class="lead">Um painel no terminal para encontrar conversas, acompanhar disponibilidade e passar um trabalho para outro agente, outra conta ou outra pessoa.</p><p class="muted">Nome escolhido: Memory Bee. Este HTML é o plano de implementação, não a dashboard funcional. Núcleo escolhido: Rust; primeiro leitor Claude Code em macOS arm64.</p><p class="muted">Atualização de execução (2026-09-28): etapas 02–04 implementadas com fixtures e CI, ensaios manuais pendentes. Etapa 05 experimental. Etapa 06 em andamento: dashboard com ações confirmadas, workspace demo e modo Claude real experimental (telas nativas via Ctrl+O, origem das ações, histórico e exportação, editor multilinha, recuperação após falha), provado apenas com CLI falsa. Codex real no workspace, cena animada e ensaios humanos pendentes. Consulte docs/EXECUTION.md para evidências.</p></header>
<p class="muted">Referência operacional: <a href="../../ROADMAP.md">roadmap canônico em Markdown</a> · <a href="../EXECUTION.md">estado de execução</a>. Em caso de divergência, consulte o Markdown.</p>
<nav aria-label="Seções"><a href="#visao">Visão</a><a href="#plano">Ordem de execução</a><a href="#decisoes">Decisões pendentes</a><a href="#processo">Como entregamos</a></nav>
<div class="grid"><div class="tile"><strong>01 · Portabilidade</strong><span>Recuperar, revisar, exportar e continuar.</span></div><div class="tile"><strong>02 · Visibilidade</strong><span>Sessões e consumo em uma TUI acessível.</span></div><div class="tile"><strong>03 · Identidade</strong><span>Perfis de contas isolados, quando suportados.</span></div></div>
<section id="visao"><h2>Uma experiência, três destinos</h2><div class="flow">Selecionar trabalho → revisar contexto e código → escolher destino<br><br>↳ Outro agente · iniciar com contexto<br>↳ Outro desenvolvedor · enviar pacote portátil<br>↳ Outra conta · abrir nova sessão isolada</div><p class="muted">A primeira entrega prova a passagem entre pessoas. A dashboard reutiliza esse núcleo; não exige criar uma IDE ou um servidor.</p><div class="callout"><strong>Invariantes desde o primeiro dia</strong><p>Exportação básica sem chamadas a modelos. Destinatário consegue ler o pacote sem instalar a ferramenta. Omissões explícitas. Credenciais nunca acompanham contexto. Exportar não faz commit ou push no projeto do usuário. Uma sessão nova não renova a cota do provedor.</p></div></section>
<section id="plano"><div class="eyebrow">Backlog priorizado</div><h2>Construir de dentro para fora</h2><p class="muted">P0 = essencial para provar a entrega · P1 = experiência principal · P2 = expansão. Os números indicam a sequência sugerida, não estimativas de prazo. Etapa 01 concluída; etapa 02 em andamento com leitor, descoberta por projeto e seleção de ramo em testes sintéticos. Exportação somente contexto implementada na etapa 03. Ensaios manuais e compatibilidade real pendentes, sem bloquear novas implementações por orientação do mantenedor. Consulte o Markdown para as decisões atualizadas.</p><div class="toolbar"><label>Prioridade<select id="priority"><option value="all">Todas</option><option value="P0">P0 · Essencial</option><option value="P1">P1 · Principal</option><option value="P2">P2 · Expansão</option></select></label><button id="expand" type="button">Abrir critérios de aceite</button><button type="button" id="print">Imprimir / salvar PDF</button><span id="count" class="muted" aria-live="polite"></span></div>
<section id="plano"><div class="eyebrow">Backlog priorizado</div><h2>Construir de dentro para fora</h2><p class="muted">P0 = essencial para provar a entrega · P1 = experiência principal · P2 = expansão. Os números indicam a sequência sugerida, não estimativas de prazo. O selo de cada etapa repete a tabela de status de docs/EXECUTION.md. Ensaios manuais e compatibilidade real continuam pendentes, sem bloquear novas implementações por orientação do mantenedor. Consulte o Markdown para as decisões atualizadas.</p><div class="toolbar"><label>Prioridade<select id="priority"><option value="all">Todas</option><option value="P0">P0 · Essencial</option><option value="P1">P1 · Principal</option><option value="P2">P2 · Expansão</option></select></label><button id="expand" type="button">Abrir critérios de aceite</button><button type="button" id="print">Imprimir / salvar PDF</button><span id="count" class="muted" aria-live="polite"></span></div>
<div id="phases"></div><noscript><p>Ative JavaScript para visualizar o backlog interativo deste arquivo local.</p></noscript></section>
<section><h2>Marcos de entrega</h2><div class="grid"><div class="tile"><strong>M1 · Entrega portátil</strong><p>Etapas 01–04</p><span>Outro dev continua uma tarefa real, usando o pacote e o código correto, sem instalar nossa ferramenta.</span></div><div class="tile"><strong>M2 · Painel útil</strong><p>Etapas 05–07</p><span>Usuário encontra a sessão, consulta uso disponível e troca de agente dentro do terminal.</span></div><div class="tile"><strong>M3 · Várias contas</strong><p>Etapa 08</p><span>Uma integração validada alterna perfis para sessões novas sem afetar a sessão original.</span></div></div></section>
<section id="decisoes"><h2>Decisões de referência</h2><p class="muted">Tabela histórica da versão 01; estado atualizado no ROADMAP.md. Stack, primeiro alvo e contrato foram definidos na etapa 01.</p><div class="table"><table><thead><tr><th>Decisão</th><th>Proposta / evidência necessária</th><th>Quando</th></tr></thead><tbody><tr><td>Stack e sistemas</td><td>Comparar distribuição, TUI, acesso a credenciais e leitores de sessão. Escolher o primeiro SO e registrar a justificativa.</td><td>01</td></tr><tr><td>Primeiro agente</td><td>Claude Code como candidato inicial; validar registros locais e versões. Codex com inspeção/exportação por arquivo e descoberta por projeto sob raiz explícita e preparação de retomada e lançamento confirmado, experimentais; lançamento pendente.</td><td>01–02</td></tr><tr><td>Uso e limites</td><td>Aguardar o repositório de consulta de uso oferecido pelo usuário; avaliar fontes oficiais e confiabilidade por integração.</td><td>01 / 07</td></tr><tr><td>Múltiplas contas</td><td>Provar isolamento com o fluxo oficial de autenticação. Sem isolamento suportado, mostrar limitação e exigir reautenticação quando aplicável.</td><td>01 / 08</td></tr><tr><td>Nome e licença</td><td>Nome escolhido: Memory Bee. Finalizar identidade visual e licença antes da distribuição pública; verificar licenças de qualquer código reaproveitado.</td><td>Antes do lançamento</td></tr><tr><td>Integração com ai-memory</td><td>Avaliar interoperabilidade com seus formatos e APIs antes de recriar memória contínua.</td><td>01 / 09</td></tr></tbody></table></div></section>
Expand All @@ -23,6 +23,7 @@
<footer>Documento de planejamento · Nada nesta página consulta contas, executa agentes ou transmite conversas. Preferências dos filtros não são persistidas. Sem dependências externas.</footer>
</main>
<script>
const status = {'01':'Concluído','02':'Em andamento · compatibilidade real pendente','03':'Em andamento · ensaio pendente','04':'Em andamento · ensaio pendente','05':'Em andamento · experimental','06':'Em andamento','07':'Pendente','08':'Pendente','09':'Pendente','10':'Pendente','11':'Pendente'};
const phases = [
['01','P0','Pesquisa e contrato do produto','Reduzir as incertezas antes de escolher a stack.','Nenhuma', ['Mapear leitura, lançamento, cota e autenticação por agente.','Comparar Orca e ai-memory; decidir reaproveitamento ou interoperabilidade.','Escolher stack, primeiro SO, formato versionado e primeiro adaptador.'], 'ADRs curtos com evidências, limites e uma tarefa sintética de referência. Pesquisa de uso e contas começa aqui, sem bloquear exportação.'],
['02','P0','Ler e preservar uma sessão','Recuperar contexto sem pedir uma última resposta ao agente.','01',['Descobrir e selecionar sessões por projeto.','Normalizar papéis, ordem, origem e timestamps; preservar o histórico disponível.','Tratar arquivos incompletos, versões desconhecidas e omissões sem inventar conteúdo.'], 'Fixtures de sessões normais, truncadas e vazias são interpretadas com proveniência. A leitura não altera os arquivos de origem e não chama modelos.'],
Expand All @@ -37,7 +38,7 @@
['11','P2','Distribuição e polimento','Preparar lançamento público após o marco escolhido.','M1 para alpha; marcos seguintes conforme release',['Fechar nome e identidade visual, documentação de instalação e licença.','Gerar pacotes para os sistemas validados, CI e testes de instalação.','Publicar releases versionadas, notas de limitações e migração do formato.'], 'Instalação em ambiente limpo e exportação demonstrável com fixtures. Sem tokens reais ou dados pessoais nos exemplos. Esta etapa pode acompanhar M1; não precisa aguardar todas as expansões.']
];
const host=document.getElementById('phases');
for(const [n,p,title,goal,dep,items,accept] of phases){const article=document.createElement('article');article.className='phase';article.dataset.priority=p;article.innerHTML=`<div class="number">${n}</div><div><span class="badge ${p}">${p}</span><span class="badge">${n === '01' ? 'Concluído · pesquisa' : 'Planejado'}</span><h3>${title}</h3><p>${goal}</p><div class="cols"><ul>${items.map(x=>`<li>${x}</li>`).join('')}</ul><div><p class="muted"><strong>Depende de:</strong> ${dep}</p><details><summary>Critério de aceite</summary><p class="accept">${accept}</p></details></div></div></div>`;host.append(article)}
for(const [n,p,title,goal,dep,items,accept] of phases){const article=document.createElement('article');article.className='phase';article.dataset.priority=p;article.innerHTML=`<div class="number">${n}</div><div><span class="badge ${p}">${p}</span><span class="badge">${status[n]}</span><h3>${title}</h3><p>${goal}</p><div class="cols"><ul>${items.map(x=>`<li>${x}</li>`).join('')}</ul><div><p class="muted"><strong>Depende de:</strong> ${dep}</p><details><summary>Critério de aceite</summary><p class="accept">${accept}</p></details></div></div></div>`;host.append(article)}
const filter=document.getElementById('priority');function update(){let count=0;for(const item of host.children){item.hidden=filter.value!=='all'&&item.dataset.priority!==filter.value;if(!item.hidden)count++}document.getElementById('count').textContent=`${count} de ${phases.length} etapas`;}
filter.addEventListener('change',update);update();
document.getElementById('expand').addEventListener('click',()=>{const all=[...host.querySelectorAll('details')];const open=all.some(d=>!d.open);all.forEach(d=>d.open=open);document.getElementById('expand').textContent=open?'Fechar critérios de aceite':'Abrir critérios de aceite';});
Expand Down
Loading