beplus-mcp 0.26.0 → 0.28.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 +23 -4
- package/dist/index.js +1837 -644
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -74,6 +74,7 @@ Reinicie o cliente. Rode a tool **`whoami`** para confirmar o vínculo.
|
|
|
74
74
|
| `BEPLUS_VERIFY_ON_START` | — | `0` | `1` valida o token no startup e loga a conta (stderr). |
|
|
75
75
|
| `BEPLUS_COST_WARN_THRESHOLD` | — | — | Avisa quando o custo passa de N 💎. |
|
|
76
76
|
| `BEPLUS_ACTIVE_PROJECT` | — | — | Projeto ativo padrão da sessão (uuid ou code). |
|
|
77
|
+
| `BEPLUS_FFPROBE` | — | `ffprobe` | Caminho do `ffprobe` usado como reserva para medir mídia no `canvas_upload_media`; `0` desliga. |
|
|
77
78
|
|
|
78
79
|
## Tools
|
|
79
80
|
|
|
@@ -95,7 +96,9 @@ Reinicie o cliente. Rode a tool **`whoami`** para confirmar o vínculo.
|
|
|
95
96
|
> (geração) e `media_urls` (`analyze_media`) — aceitam **URL pública OU caminho de arquivo local**
|
|
96
97
|
> (`/caminho/foto.png`, `~/Desktop/ref.jpg`, `file://…`). Caminhos locais sobem automaticamente
|
|
97
98
|
> pro R2 da BePlus e viram URL pública antes de chegar ao provider — não precisa mais hospedar a
|
|
98
|
-
> imagem você mesmo.
|
|
99
|
+
> imagem você mesmo. Teto de **95 MB** por arquivo: a rota aceita 300 MB, mas `api.beplus.academy`
|
|
100
|
+
> passa pelo proxy da Cloudflare, que corta corpo acima de 100 MB. Formatos aceitos: os da rota de
|
|
101
|
+
> arquivos (imagem, vídeo, áudio, PDF, md, txt; SVG não entra).
|
|
99
102
|
|
|
100
103
|
### Calls (reuniões gravadas e transcritas)
|
|
101
104
|
| Tool | O que faz |
|
|
@@ -113,21 +116,37 @@ Reinicie o cliente. Rode a tool **`whoami`** para confirmar o vínculo.
|
|
|
113
116
|
| `whoami` | Conta vinculada (link check do PAT). |
|
|
114
117
|
|
|
115
118
|
### Canvas online (boards colaborativos)
|
|
116
|
-
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 e
|
|
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`.
|
|
117
120
|
|
|
118
121
|
| Tool | O que faz |
|
|
119
122
|
|------|-----------|
|
|
120
123
|
| `canvas_list_boards` | Boards de que você é membro (id, título, papel, seq). |
|
|
121
|
-
| `canvas_read_board` | Resumo compacto: nós (tipo, nome, campos principais), ligações, vínculo com o IA Lab. Sem mídia. `node_ids` traz o `data`
|
|
124
|
+
| `canvas_read_board` | Resumo compacto: nós (tipo, nome, campos principais), ligações, vínculo com o IA Lab. Sem mídia. `node_ids` traz o `data` de alguns nós, com cada corte marcado (`path=…`). **Obrigatório antes de editar.** |
|
|
125
|
+
| `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`. 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. |
|
|
122
126
|
| `canvas_create_board` | Cria board vazio ou `template: "narration"` (Contexto, Narração, Roteiro e Locução ligados). |
|
|
123
127
|
| `canvas_add_node` | Adiciona nó de um tipo do catálogo, com `label`, `data` e ligações de entrada/saída no mesmo passo. |
|
|
124
128
|
| `canvas_update_node` | Grava chaves do `data` (null apaga), renomeia (`label`) e move. |
|
|
129
|
+
| `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. |
|
|
130
|
+
| `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. |
|
|
125
131
|
| `canvas_connect` | Liga saída → entrada. |
|
|
126
132
|
| `canvas_delete` | Apaga nós (com ligações e variações) e/ou ligações. |
|
|
127
133
|
| `canvas_rename_board` | Troca o título (`board.set`). |
|
|
128
134
|
| `canvas_list_members` · `canvas_set_member` · `canvas_remove_member` | Membros e papéis (`editor`/`viewer`) por userId. |
|
|
135
|
+
| `canvas_list_comments` | Comentários do board (padrão: abertos) com o lugar em texto ("no nó X", "na versão 2 de X", "em 01:12 da Montagem X", "no board"), autor, pedido e respostas. Avisa quando o alvo sumiu. |
|
|
136
|
+
| `canvas_reply_comment` | Responde numa thread sem resolver (para perguntar). |
|
|
137
|
+
| `canvas_resolve_comment` | Fecha o comentário com uma frase obrigatória dizendo o que foi feito, postada como resposta antes de resolver. |
|
|
138
|
+
| `canvas_reopen_comment` | Reabre, com motivo opcional. |
|
|
139
|
+
| `canvas_comment` | Cria comentário raiz ancorado (nó, versão, minutagem, ponto ou board), para deixar pergunta na tela da pessoa. |
|
|
129
140
|
|
|
130
|
-
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".
|
|
141
|
+
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". A exceção é o `canvas_patch_node`: vários envelopes em ordem, cada um julgado sozinho, e o relatório diz qual entrou.
|
|
142
|
+
|
|
143
|
+
Montagem: `musicGainDb`, `duckingDb` e `fadeMs` valem só para a montagem automática (clipes ligados). A timeline do editor (`data.timeline`; `data.sequence` é o legado congelado desde a EP1 do Canvas) tem volume próprio nos clipes (`gainDb`, pontos de ganho, fades) e nas faixas. Quando o nó já tem `data.timeline`, o MCP não escreve no `data.sequence`.
|
|
144
|
+
|
|
145
|
+
Medidas do upload: duração e dimensões saem do cabeçalho do arquivo (png, jpg, webp, gif, mp4, mov, m4v, m4a, wav, mp3, flac), sem dependência. Para os outros formatos (webm, mkv, ogg, opus, heic…), o MCP usa o `ffprobe` do FFmpeg **se estiver instalado** (`brew install ffmpeg`); sem ele, o arquivo sobe igual e a resposta diz que não mediu.
|
|
146
|
+
|
|
147
|
+
Login pelo navegador: o token vence em ~1 h. O MCP relê a credencial do disco a cada chamada e, no 401, renova sozinho uma vez e repete. Várias sessões abertas não brigam: a renovação passa por uma trava de arquivo, porque o backend derruba a família inteira quando o mesmo refresh chega duas vezes. Se a renovação falhar, rode `beplus-mcp login`; não precisa reiniciar o agente.
|
|
148
|
+
|
|
149
|
+
"Aplica os comentários": `canvas_list_comments` → para cada um, ler o nó ancorado, aplicar pelas `canvas_*` e fechar com `canvas_resolve_comment` dizendo o que fez. Pedido ambíguo ou alvo sumido recebe pergunta (`canvas_reply_comment`) e fica aberto. As escritas de comentário respeitam o limite do back (60/min por pessoa): o MCP espaça as chamadas e, no 429, espera e tenta de novo. No login pelo navegador, escrever comentário exige `ialab:spend`.
|
|
131
150
|
|
|
132
151
|
Toda geração mostra `Custo: N 💎 · Saldo: M 💎`. As tools de calls e listagem respeitam a visibilidade da equipe — só retornam o que a sua conta pode ver.
|
|
133
152
|
|