sapiens-mcp 1.66.3 → 1.66.4
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/dist/registry.js +1 -1
- package/dist/tools/pipeline.js +44 -0
- package/package.json +1 -1
package/dist/registry.js
CHANGED
|
@@ -51,7 +51,7 @@ import { skillMenuLine } from "./skills.js";
|
|
|
51
51
|
*/
|
|
52
52
|
export const TOOLS = {
|
|
53
53
|
sapiens_pipeline: {
|
|
54
|
-
description: "CRUD do content pipeline Sapiens (sources/productions/publishables). Sub-actions: list_sources, list_articles (use includeDrafts pra incluir drafts; onlyAvailable pra esconder os já virados em source), get_source, get_production, list_versions, add_article_as_source, create_draft_article_and_source (seed), create_production (sourceId+format → productionId draft), update_production (substitui payload, opcionalmente muda status), finalize_production (cria publishable v1, v2... com snapshot), remove_production, remove_source, set_source_done, update_source_notes, restore_version (volta payload duma versão antiga), set_publishable_title (renomeia um publishable), backfill_via (rotula em lote o campo 'via' das productions antigas; dryRun=true só lista), propose_mega_grafico_plan (granular: só gera plano via Gemini, devolve fullPrompt+spec), run_mega_grafico_full (ONE-SHOT, recomendado: cria production+propõe plano+gera imagem+aplica selo Sapiens+finaliza publishable numa chamada só), generate_carousel (gera um carrossel editorial standalone a partir de brief OU articleId — 7-9 slides na voz Sapiens + imagens do banco; devolve id + url do editor pro humano abrir, ajustar e exportar; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava uma folha registrada da casa, ex 'feed' ou 'reflexao', em vez do caminho editorial livre; aspect opcional escolhe o TAMANHO da folha, '9:16' (default, ocupa a tela inteira do celular no feed) ou '4:5' (folha clássica, ainda melhor no LinkedIn e no X) — model é a FORMA, aspect é o TAMANHO, e dá pra trocar depois no editor). generate_carousel_production (o IRMÃO PIPELINE do generate_carousel: recebe um sourceId de artigo, CRIA a production carrossel_ig e a preenche pelo MESMO motor da casa, já no shape editorial (templateId+slots) que o editor de pipeline renderiza — prefira ESTE a create_production+payload cru pro carrossel, que abre VAZIO no editor; devolve productionId + url do editor de pipeline; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava a folha registrada; beats opcional entrega copy PRONTO por beat da espinha, [{n, slots}], quando o agente JÁ escreveu e validou os blocos: com beats o Gemini de escrita NÃO roda e a rodada cobra só o picker de imagens, zero com autoPickImages=false; caption opcional vira a legenda do meta). CARROSSEL FINO (edição sem tela, admin-only): list_carousels (seus carrosséis standalone), get_carousel (payload completo + catálogo de templates com slots/limites + paletas + o formato da peça e os válidos — tudo pra VOCÊ escrever os slides), update_carousel (payload inteiro de volta, sanitizado no servidor; preserve os campos image dos slides que não mexeu E o theme.sheet, que é o formato: theme reescrito sem ele devolve a peça pra folha padrão), carousel_auto_images (IA escolhe imagens do banco pros slides de foto, 60 Sinapses; aceita carouselId standalone OU productionId de carrossel da pipeline; makeVisual=true converte slides de texto pra layouts de foto antes — ritmo visual; generateMissing=true gera imagem nova pros que o banco não cobrir, ~450 Sinapses cada, até 4, avise o custo antes), carousel_generate_image (imagem nova pra UM slide, ~450 Sinapses, customPrompt opcional). Fluxo confortável (standalone): generate_carousel → get_carousel → update_carousel (afia os textos) → carousel_auto_images → humano abre a url pra exportar. Fluxo pipeline (carrossel atrelado a um artigo/source): generate_carousel_production (sourceId) → humano abre a url do editor de pipeline pra revisar e finalizar (finalize_production). Fluxo pipeline com copy do agente (a skill escreveu os blocos): generate_carousel_production (sourceId + model + beats) → carousel_auto_images (productionId) se faltar foto → humano revisa e finaliza. Pra mega_grafico, SEMPRE prefira run_mega_grafico_full em vez de sequenciar manualmente (menos drift). Idempotente só na production (passa productionId pra reusar a MESMA row), mas cada run RE-GERA a imagem e cobra de novo (~900 Sinapses): não é grátis re-rodar. OBRIGATÓRIO perguntar ao user antes se withHelen=true (cartoon Helen interage com tema, ~15-25% do poster) ou false (poster 100% diagramático). Custo ~900-1000 sinapses por geração. run_mega_grafico_full, generate_carousel, generate_carousel_production, carousel_auto_images (com generateMissing) e carousel_generate_image são SÍNCRONAS e pesadas: vale a REGRA DO TIMEOUT (podem cobrar mesmo voltando 'Timeout'; cheque get_carousel/dashboard antes de repetir). Use skipFinalize=true se quiser deixar production em 'ready' pro admin revisar antes de publishable. Payload livre por formato — chame sapiens_meta action=formats pra ver schemas sugeridos.",
|
|
54
|
+
description: "CRUD do content pipeline Sapiens (sources/productions/publishables). Sub-actions: list_sources, list_articles (use includeDrafts pra incluir drafts; onlyAvailable pra esconder os já virados em source), get_source, get_production, list_versions, add_article_as_source, create_draft_article_and_source (seed), create_production (sourceId+format → productionId draft), update_production (substitui payload, opcionalmente muda status), finalize_production (cria publishable v1, v2... com snapshot), remove_production, remove_source, set_source_done, update_source_notes, restore_version (volta payload duma versão antiga), set_publishable_title (renomeia um publishable), backfill_via (rotula em lote o campo 'via' das productions antigas; dryRun=true só lista), propose_mega_grafico_plan (granular: só gera plano via Gemini, devolve fullPrompt+spec), run_mega_grafico_full (ONE-SHOT, recomendado: cria production+propõe plano+gera imagem+aplica selo Sapiens+finaliza publishable numa chamada só), generate_carousel (gera um carrossel editorial standalone a partir de brief OU articleId — 7-9 slides na voz Sapiens + imagens do banco; devolve id + url do editor pro humano abrir, ajustar e exportar; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava uma folha registrada da casa, ex 'feed' ou 'reflexao', em vez do caminho editorial livre; aspect opcional escolhe o TAMANHO da folha, '9:16' (default, ocupa a tela inteira do celular no feed) ou '4:5' (folha clássica, ainda melhor no LinkedIn e no X) — model é a FORMA, aspect é o TAMANHO, e dá pra trocar depois no editor). generate_carousel_production (o IRMÃO PIPELINE do generate_carousel: recebe um sourceId de artigo, CRIA a production carrossel_ig e a preenche pelo MESMO motor da casa, já no shape editorial (templateId+slots) que o editor de pipeline renderiza — prefira ESTE a create_production+payload cru pro carrossel, que abre VAZIO no editor; devolve productionId + url do editor de pipeline; admin-only, cobra Sinapses, reembolsa se falhar; model opcional trava a folha registrada; beats opcional entrega copy PRONTO por beat da espinha, [{n, slots}], quando o agente JÁ escreveu e validou os blocos: com beats o Gemini de escrita NÃO roda e a rodada cobra só o picker de imagens, zero com autoPickImages=false; caption opcional vira a legenda do meta). CARROSSEL FINO (edição sem tela, admin-only): list_carousels (seus carrosséis standalone), get_carousel (payload completo + catálogo de templates com slots/limites + paletas + o formato da peça e os válidos — tudo pra VOCÊ escrever os slides), update_carousel (payload inteiro de volta, sanitizado no servidor; preserve os campos image dos slides que não mexeu E o theme.sheet, que é o formato: theme reescrito sem ele devolve a peça pra folha padrão), carousel_auto_images (IA escolhe imagens do banco pros slides de foto, 60 Sinapses; aceita carouselId standalone OU productionId de carrossel da pipeline; makeVisual=true converte slides de texto pra layouts de foto antes — ritmo visual; generateMissing=true gera imagem nova pros que o banco não cobrir, ~450 Sinapses cada, até 4, avise o custo antes), carousel_generate_image (imagem nova pra UM slide, ~450 Sinapses, customPrompt opcional), capa_ia (A CAPA SEAMLESS: gera uma imagem 16:9 contínua com o TEXTO QUEIMADO dentro dela e o elemento vivo cruzando as letras, fatia em duas peças 3:4 no servidor e, com carouselId, já põe as duas na frente do carrossel. É a capa mais bonita da casa e a única em que o sujeito passa na frente e atrás do título, porque o texto é parte da imagem, não overlay. Args: capaHeadline (obrigatório), capaSubline, capaRightText (cai no 2º slide), capaElement e capaVibe (omitidos, a IA escolhe pela pauta), capaImageModel. O MOTOR é a decisão que mais muda o resultado, porque capa é tipografia: gpt-image-2-high (default, 1200, o único da casa que entrega letra pequena legível, sai em 1536x1024) contra nano-banana-max (900, cena mais fiel e 2K de verdade, letra erra mais). Cobra pelo catálogo, no motor que rodou, e a peça entra na sua galeria como qualquer geração. Depois de gerada, ANIMAR a capa (o elemento deriva e o texto fica congelado) é ato do editor, não do agente). Fluxo confortável (standalone): generate_carousel → get_carousel → update_carousel (afia os textos) → carousel_auto_images → humano abre a url pra exportar. Fluxo pipeline (carrossel atrelado a um artigo/source): generate_carousel_production (sourceId) → humano abre a url do editor de pipeline pra revisar e finalizar (finalize_production). Fluxo pipeline com copy do agente (a skill escreveu os blocos): generate_carousel_production (sourceId + model + beats) → carousel_auto_images (productionId) se faltar foto → humano revisa e finaliza. Pra mega_grafico, SEMPRE prefira run_mega_grafico_full em vez de sequenciar manualmente (menos drift). Idempotente só na production (passa productionId pra reusar a MESMA row), mas cada run RE-GERA a imagem e cobra de novo (~900 Sinapses): não é grátis re-rodar. OBRIGATÓRIO perguntar ao user antes se withHelen=true (cartoon Helen interage com tema, ~15-25% do poster) ou false (poster 100% diagramático). Custo ~900-1000 sinapses por geração. run_mega_grafico_full, generate_carousel, generate_carousel_production, carousel_auto_images (com generateMissing) e carousel_generate_image são SÍNCRONAS e pesadas: vale a REGRA DO TIMEOUT (podem cobrar mesmo voltando 'Timeout'; cheque get_carousel/dashboard antes de repetir). Use skipFinalize=true se quiser deixar production em 'ready' pro admin revisar antes de publishable. Payload livre por formato — chame sapiens_meta action=formats pra ver schemas sugeridos.",
|
|
55
55
|
schema: pipelineSchema,
|
|
56
56
|
handler: pipeline,
|
|
57
57
|
},
|
package/dist/tools/pipeline.js
CHANGED
|
@@ -58,7 +58,36 @@ export const pipelineSchema = z.object({
|
|
|
58
58
|
"update_carousel",
|
|
59
59
|
"carousel_auto_images",
|
|
60
60
|
"carousel_generate_image",
|
|
61
|
+
"capa_ia",
|
|
61
62
|
]),
|
|
63
|
+
// capa_ia: a capa seamless 16:9 que vira os DOIS primeiros slides 3:4.
|
|
64
|
+
// O texto é queimado dentro da imagem (é o que deixa o elemento passar na
|
|
65
|
+
// frente e atrás das letras), então quem escreve a manchete aqui é quem
|
|
66
|
+
// escolhe o que vai aparecer desenhado na peça.
|
|
67
|
+
capaHeadline: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe("capa_ia: a manchete da capa, desenhada DENTRO da imagem. Curta: ela ocupa a folha inteira."),
|
|
71
|
+
capaSubline: z
|
|
72
|
+
.string()
|
|
73
|
+
.optional()
|
|
74
|
+
.describe("capa_ia: linha de apoio embaixo da manchete (opcional)."),
|
|
75
|
+
capaRightText: z
|
|
76
|
+
.string()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("capa_ia: texto que cai na METADE DIREITA, ou seja, no 2º slide (opcional)."),
|
|
79
|
+
capaElement: z
|
|
80
|
+
.string()
|
|
81
|
+
.optional()
|
|
82
|
+
.describe("capa_ia: o que atravessa a cena (koi, aguas-vivas, petalas, borboletas, fagulhas, passaros, corujas). Omitido = a IA escolhe pela pauta."),
|
|
83
|
+
capaVibe: z
|
|
84
|
+
.string()
|
|
85
|
+
.optional()
|
|
86
|
+
.describe("capa_ia: a atmosfera (futuro-etereo, pedra-serena, aurora, concreto-frio). Omitido = a IA escolhe pela pauta."),
|
|
87
|
+
capaImageModel: z
|
|
88
|
+
.string()
|
|
89
|
+
.optional()
|
|
90
|
+
.describe("capa_ia: motor da imagem. gpt-image-2-high (default, 1200, letra pequena legível), gpt-image-2-low (200), nano-banana-max (900, cena mais fiel e 2K, letra erra mais), nano-banana-2 (450, o rápido)."),
|
|
62
91
|
// propose_mega_grafico_plan / run_mega_grafico_full
|
|
63
92
|
withHelen: z
|
|
64
93
|
.boolean()
|
|
@@ -503,6 +532,21 @@ export async function pipeline(args) {
|
|
|
503
532
|
generateMissing: args.generateMissing,
|
|
504
533
|
});
|
|
505
534
|
}
|
|
535
|
+
case "capa_ia": {
|
|
536
|
+
// Gera a capa 16:9 com o texto baked, fatia em duas 3:4 no servidor (o
|
|
537
|
+
// corte que o editor faz no canvas) e, com carouselId, já põe os dois
|
|
538
|
+
// slides na frente do carrossel. SÍNCRONA e paga: vale a REGRA DO TIMEOUT.
|
|
539
|
+
return await convexAction("capaIa:mcpCapaIa", {
|
|
540
|
+
sessionToken,
|
|
541
|
+
headline: need(args.capaHeadline, "capaHeadline"),
|
|
542
|
+
...(args.capaSubline ? { subline: args.capaSubline } : {}),
|
|
543
|
+
...(args.capaRightText ? { rightText: args.capaRightText } : {}),
|
|
544
|
+
...(args.capaElement ? { element: args.capaElement } : {}),
|
|
545
|
+
...(args.capaVibe ? { vibe: args.capaVibe } : {}),
|
|
546
|
+
...(args.capaImageModel ? { imageModel: args.capaImageModel } : {}),
|
|
547
|
+
...(args.carouselId ? { carouselId: args.carouselId } : {}),
|
|
548
|
+
});
|
|
549
|
+
}
|
|
506
550
|
case "carousel_generate_image":
|
|
507
551
|
// Gera imagem NOVA pra UM slide (nanoBanana, ~450 Sinapses) e salva no
|
|
508
552
|
// carrossel. SÍNCRONA (~20-60s): vale a REGRA DO TIMEOUT.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.66.
|
|
3
|
+
"version": "1.66.4",
|
|
4
4
|
"mcpName": "com.sapiensinteticos/sapiens",
|
|
5
5
|
"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.",
|
|
6
6
|
"type": "module",
|