beplus-mcp 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -116,7 +116,7 @@ Reinicie o cliente. Rode a tool **`whoami`** para confirmar o vínculo.
116
116
  | `whoami` | Conta vinculada (link check do PAT). |
117
117
 
118
118
  ### Canvas online (boards colaborativos)
119
- Falam com `/api/v1/canvas`. **Não geram mídia nem gastam diamantes**: montam o fluxo; quem roda os nós é a pessoa, no Canvas. Funcionam com PAT e com o `beplus-mcp login`: ler boards pede `ialab:read`; criar, editar, compartilhar e subir arquivo pede `ialab:spend`.
119
+ Falam com `/api/v1/canvas`. Montam e editam o fluxo e **não geram mídia**, com uma exceção: `canvas_run` roda nós pela aba do Canvas que a pessoa tem aberta no board e **gasta diamantes**, sempre com teto (`max_diamonds`). Funcionam com PAT e com o `beplus-mcp login`: ler boards pede `ialab:read`; criar, editar, compartilhar e subir arquivo pede `ialab:spend`.
120
120
 
121
121
  | Tool | O que faz |
122
122
  |------|-----------|
@@ -139,6 +139,10 @@ Falam com `/api/v1/canvas`. **Não geram mídia nem gastam diamantes**: montam o
139
139
  | `canvas_resolve_comment` | Fecha o comentário com uma frase obrigatória dizendo o que foi feito, postada como resposta antes de resolver. |
140
140
  | `canvas_reopen_comment` | Reabre, com motivo opcional. |
141
141
  | `canvas_comment` | Cria comentário raiz ancorado (nó, versão, minutagem, ponto ou board), para deixar pergunta na tela da pessoa. |
142
+ | `canvas_run` | Roda nós pela aba do Canvas aberta da própria pessoa (mesma conta; sem aba, nada roda). `max_diamonds` obrigatório: a aba estima como o botão Rodar e só roda se couber. `dry_run: true` só estima. Alvo: `node_ids` (roda de novo mesmo em cache, como o Rodar do cartão), `from_node_id` (daqui para frente) ou `all: true` (só o que mudou). `simulated: true` exige a aba no Simulado; sem ele, a aba precisa estar no Real. Prompt com PT sem aplicar no EN: recusa e diz qual. Devolve o que vai rodar, o custo e o `request_id`. |
143
+ | `canvas_run_status` | Andamento de um `request_id`: estado de cada nó, estimado e gasto, perguntado à aba que rodou. Com a aba fechada, lê o estado de execução do board para os nós do pedido. |
144
+
145
+ Rodar pelo MCP (`canvas_run`): o servidor (academy-backend, rota `run-requests`) repassa o pedido para **uma** aba da própria pessoa (a aberta por último) e nunca roda nada. Sem resposta em 20 s, o destino fica incerto: a ferramenta manda consultar `canvas_run_status` com o mesmo `request_id`, e repetir `canvas_run` com esse `request_id` é seguro (a aba não roda duas vezes).
142
146
 
143
147
  Concorrência: cada edição relê o board, vai num envelope só (um `seq`) e é recusada, sem aplicar nada, se outra pessoa mexeu nos mesmos nós desde a sua leitura. Recusas do servidor (`node-missing` e afins) voltam em português com "releia". As exceções são o `canvas_patch_node` e o `canvas_update_nodes`: vários envelopes em ordem, cada um julgado sozinho, e o relatório diz qual entrou. A medida que a tela grava sozinha (`data.__measured`) não conta como "outra pessoa mexeu".
144
148