beplus-mcp 0.36.0 → 0.37.1
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 +7 -5
- package/dist/index.js +546 -86
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -125,15 +125,15 @@ Falam com `/api/v1/canvas`. Montam e editam o fluxo e **não geram mídia**, com
|
|
|
125
125
|
| Tool | O que faz |
|
|
126
126
|
|------|-----------|
|
|
127
127
|
| `canvas_list_boards` | Boards de que você é membro (id, título, papel, seq). |
|
|
128
|
-
| `canvas_read_board` | Resumo compacto: nós (tipo, nome, posição, **tamanho**, campos principais), ligações, vínculo com o IA Lab. Sem mídia. O tamanho diz a origem: `medido` (o da tela) ou `gravado` (o piso). `node_ids` traz o `data` de alguns nós, com cada corte marcado (`path=…`). **Obrigatório antes de editar.** |
|
|
128
|
+
| `canvas_read_board` | Resumo compacto: nós (tipo, nome, posição, **tamanho**, campos principais), ligações, vínculo com o IA Lab. Sem mídia. O tamanho diz a origem: `medido` (o da tela) ou `gravado` (o piso). `node_ids` traz o `data` de alguns nós, com cada corte marcado (`path=…`). Cada cartão diz a aba (`aba=<id curto>` ou `aba=avulsos`) e o topo conta os cartões de cada aba; `aba` lê uma aba só (a seção, quem mora nela e só os fios que tocam neles; o fio que vai a outra aba sai marcado como externo). **Obrigatório antes de editar.** |
|
|
129
129
|
| `canvas_read_node` | O `data` de um nó **sem corte**, em JSON, com tamanho total e sha256 para conferir e fazer diff; partes explícitas (`offset`) acima de `max_chars`. O cabeçalho traz o tamanho do cartão (`medido` com a hora da medida, ou `gravado`). Na Montagem, sem `path`, traz `data.timeline` (ou `data.sequence`, o legado, quando ainda não há timeline) e diz qual veio. Não conta como leitura para editar. |
|
|
130
130
|
| `canvas_create_board` | Cria board vazio ou `template: "narration"` (Contexto, Narração, Roteiro e Locução ligados). |
|
|
131
|
-
| `canvas_add_node` | Adiciona nó de um tipo do catálogo, com `label`, `data`, `size` e ligações de entrada/saída no mesmo passo. |
|
|
131
|
+
| `canvas_add_node` | Adiciona nó de um tipo do catálogo, com `label`, `data`, `size` e ligações de entrada/saída no mesmo passo. `aba` grava `data.abaId` e, sem `position`, o cartão nasce no fim do conteúdo da aba. Texto livre (`label`) sem `size {w}` nasce na largura do tamanho do texto: título 2000, subtítulo 1200, corpo 320. |
|
|
132
132
|
| `canvas_update_node` | Grava chaves do `data` (null apaga), renomeia (`label`), move (`position`) e muda a caixa (`size`). |
|
|
133
133
|
| `canvas_update_nodes` | Vários nós num passo (position, size, label, data), em envelopes de até 64 KB com o relato de cada um. `layout_only: true` aceita só posição e `size {w, h}`, não pede leitura e não recusa por conflito (nesses campos vale quem grava por último). |
|
|
134
|
-
| `canvas_arrange_rows` | Arruma nós em linhas (uma por versão ou por take) com o tamanho da tela e as larguras da convenção; grava só posição e tamanho. Veja abaixo. |
|
|
134
|
+
| `canvas_arrange_rows` | Arruma nós em linhas (uma por versão ou por take) com o tamanho da tela e as larguras da convenção; grava só posição e tamanho. A sobreposição se confere só dentro da aba (`aba`, ou a dos nós arrumados). Veja abaixo. |
|
|
135
135
|
| `canvas_patch_node` | Grava vários caminhos dentro do `data` (`{path, value}` ou `{path, unset: true}`), quebrando sozinho em envelopes de até 64 KB e relatando cada um. É o jeito de mexer em partes de uma estrutura grande (ex.: clipes da timeline) sem reenviar tudo. O caminho não entra em lista. |
|
|
136
|
-
| `canvas_upload_media` | Sobe arquivo local ou URL pela rota de arquivos (teto de 95 MB) e devolve url, mime, bytes, duração e dimensões, o item do nó Mídia (`media_item`), o `asset` e o `libraryItemId` de um clipe da timeline da Montagem. Com `board_id`, já grava no nó Mídia (`node_id`) ou cria um nó Mídia novo. |
|
|
136
|
+
| `canvas_upload_media` | Sobe arquivo local ou URL pela rota de arquivos (teto de 95 MB) e devolve url, mime, bytes, duração e dimensões, o item do nó Mídia (`media_item`), o `asset` e o `libraryItemId` de um clipe da timeline da Montagem. Com `board_id`, já grava no nó Mídia (`node_id`) ou cria um nó Mídia novo; com `aba`, o nó novo grava `data.abaId` e nasce no fim do conteúdo da aba. |
|
|
137
137
|
| `canvas_connect` | Liga saída → entrada. |
|
|
138
138
|
| `canvas_delete` | Apaga nós (com ligações e variações) e/ou ligações. |
|
|
139
139
|
| `canvas_rename_board` | Troca o título (`board.set`). |
|
|
@@ -153,7 +153,9 @@ Enquadrar pelo MCP (`canvas_focus`): o servidor (rota `focus-requests`) repassa
|
|
|
153
153
|
|
|
154
154
|
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".
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
Abas (AB9, desde a 0.37): cada aba do Canvas é um plano sem borda. O cartão guarda a aba em `data.abaId` (o id da seção da aba), e a posição só decide quando o campo falta: o centro dentro do retângulo gravado da seção (a primeira da barra), depois a aba a até 2.000 pontos, senão Avulsos. É a mesma regra do `tab-membership.ts` do Canvas (`src/canvas/tabs.ts`, commit 749919e6); `data.abaId` apontando para aba apagada ou arquivada manda o cartão para Avulsos. `canvas_add_node` e `canvas_upload_media` recebem `aba` (o id da seção, ou o começo único dele, o `aba=…` que a leitura mostra) e gravam o campo; sem `position`, o cartão nasce no fim do conteúdo da aba (abaixo do cartão mais baixo, 120 pontos de folga, alinhado à esquerda do conteúdo). `data.abaId` só aceita o id de uma aba viva (ou `null` para tirar o campo). O cadeado (`travada`) conta quem **mora** na aba, e não quem está dentro do retângulo: mover, redimensionar, trocar ou apagar a aba (`data.abaId`) de dois ou mais membros num pedido só é recusado, um por vez segue valendo; cartão novo, mover para dentro da aba travada e gravar o `data.abaId` da aba onde o cartão já mora (o carimbo em lote da migração) passam. Seção comum travada (sem `aba`) continua pela caixa inteira dentro da moldura.
|
|
157
|
+
|
|
158
|
+
Tamanho do cartão: o `size` gravado é **piso**; o cartão cresce com o conteúdo (um Prompt de 340 de largura com o `!!ESTILO` resolvido vira uma coluna de 1.800). O Canvas grava o tamanho desenhado em `data.__measured = { w, h, at }` quando o cartão passa do piso; as leituras mostram esse (`medido`) ou o piso (`gravado`). É campo interno: não aparece como dado e nenhuma ferramenta grava nele. `size: {w, h}` muda a caixa; `size: "titulo" | "subtitulo" | "corpo"` é o tamanho do texto do Texto livre (`data.size` do nó `label`). Desde a 0.37.1, ao criar (`canvas_add_node`), o Texto livre sem `size {w}` nasce na largura do tamanho do texto, os mesmos números do Canvas: `titulo` 2000, `subtitulo` 1200, `corpo` 320 (o tamanho vem do `size` em texto ou do `data.size`; o `size` em texto vence). Um título de grupo não vira mais uma torre estreita de texto por cima dos cartões. `size {w}` vale o que veio (um lado só vale: com só `h`, a largura vem do tamanho do texto), e o que já existe não muda: `canvas_update_node` e `canvas_update_nodes` gravam só o que foi pedido.
|
|
157
159
|
|
|
158
160
|
Menção (`!!` de Bloco, `##` de texto): gravar `{{var}}` no `template` do Prompt com `data.mentions = { var: { node, port } }` (o Bloco sai pela porta `text`) cria, no mesmo envelope, a ligação fina que o Canvas desenha no navegador (`viaMention`, id `mention:<origem>:<porta>><prompt>:<var>`, o mesmo dos dois lados). Tirar a var ou a menção tira a ligação. Porta já ligada à mão não ganha segunda ligação, e menção que fecharia ciclo não liga. As ligações das outras regras do conciliador (mídia `@@`, `prompt.refs → gerador.refs`, seções) o Canvas faz ao abrir o board.
|
|
159
161
|
|