sapiens-mcp 1.46.1 → 1.46.2

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.
Files changed (2) hide show
  1. package/dist/registry.js +18 -3
  2. package/package.json +1 -1
package/dist/registry.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ZodError } from "zod";
1
2
  import { zodToJsonSchema } from "zod-to-json-schema";
2
3
  import { pipeline, pipelineSchema } from "./tools/pipeline.js";
3
4
  import { image, imageSchema } from "./tools/image.js";
@@ -226,9 +227,8 @@ Cliente que lê resources MCP acha o MESMO conteúdo em skill://sapiens/<slug>/S
226
227
  REGRA DE OURO:
227
228
  - PRIMEIRO CONTATO ou "o que você faz?"/"como começo?"/"o que dá pra fazer?": chame sapiens_meta action=start e MOSTRE o resultado na sua voz. Sem login, ele ensina a conectar; logado, traz saldo + primeiros poderes com exemplos. É a porta de entrada: não despeje a lista inteira de tools, deixe o start guiar.
228
229
  - LOGO APÓS UM LOGIN BEM-SUCEDIDO (action=login retornou ok): chame action=start na sequência e mostre a porta de entrada. O recém-chegado não sabe o que pedir; não o deixe na tela em branco, guie a primeira jogada sem ele precisar perguntar.
229
- - Se um tool voltar erro de validação ("exige X", "falta Y"), LEIA o erro e refaça a chamada COM o que falta. NUNCA repita igual a chamada que falhou: 3 falhas seguidas no mesmo tool fazem o cliente marcar o servidor como "unreachable" por ~56s (disjuntor anti-loop). Aí parece que "o MCP caiu", quando foi só argumento faltando.
230
230
  - Antes de gerar algo caro (imagem/música/vídeo), cheque saldo: sapiens_meta action=credits (ou subscription). Saldo baixo, avise o usuário antes. Vídeo é o mais caro da casa: confirme com ele antes de disparar.
231
- - REGRA DO TIMEOUT (vale pra toda geração SÍNCRONA: imagem pesada, artigo, mega-gráfico, carrossel): a chamada pode estourar o teto de ~120s do cliente e voltar 'Timeout' MESMO tendo gerado e COBRADO. Nunca repita às cegas: confira antes onde o resultado cairia (imagem: sapiens_gallery action=list; artigo: sapiens_write action=list; carrossel: sapiens_pipeline action=list_carousels; pipeline: /dashboard/admin/content).
231
+ - REGRA DO TIMEOUT: geração SÍNCRONA pode estourar o teto de ~120s do cliente e voltar 'Timeout' MESMO tendo gerado e COBRADO. Nunca repita às cegas: confira antes onde o resultado cairia (a tabela de onde conferir está na skill 'primeiros-passos').
232
232
  - "sessionToken expirado" = refaça login: sapiens_meta action=login com o código de sapiensinteticos.com/conectar-claude.
233
233
  - sapiens_meta action=formats devolve os schemas por formato; action=whoami diz tier (user/admin) + saldo. sapiens_image e sapiens_video action=models trazem o catálogo com o preço ATUAL: consulte em vez de chutar custo.
234
234
 
@@ -353,8 +353,23 @@ export async function callTool(name, rawArgs) {
353
353
  }
354
354
  catch (e) {
355
355
  return {
356
- content: [{ type: "text", text: `Erro: ${describeConvexError(e)}` }],
356
+ content: [
357
+ { type: "text", text: `Erro: ${describeConvexError(e)}${retryHint(e)}` },
358
+ ],
357
359
  isError: true,
358
360
  };
359
361
  }
360
362
  }
363
+ /**
364
+ * A regra do disjuntor viaja NO ERRO, não no handshake. Ela só passa a valer
365
+ * depois que uma chamada falhou, então cobrar ~300 chars de TODA conversa pra
366
+ * avisar de algo que talvez nunca aconteça é caro: aqui ela chega no instante
367
+ * exato em que aplica e custa zero nas outras. Só em erro de validação (Zod):
368
+ * erro de saldo ou de sessão tem o próprio conserto, e repetir a chamada
369
+ * idêntica não é o risco deles.
370
+ */
371
+ function retryHint(e) {
372
+ if (!(e instanceof ZodError))
373
+ return "";
374
+ return " -> Refaça a chamada COM o campo corrigido. NUNCA repita idêntica: 3 falhas seguidas no mesmo tool fazem o cliente marcar o servidor como 'unreachable' por ~56s, e aí parece que o MCP caiu quando foi só argumento faltando.";
375
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sapiens-mcp",
3
- "version": "1.46.1",
3
+ "version": "1.46.2",
4
4
  "description": "MCP server pra operar o Sapiens Sintéticos (sapiensinteticos.com) pelo Claude Code: gerar imagem, escrever artigo, voz, música e mais, na sua conta. Login pelo código de sapiensinteticos.com/conectar-claude.",
5
5
  "type": "module",
6
6
  "bin": {