sapiens-mcp 1.26.4 → 1.27.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/dist/index.js +3 -3
- package/dist/tools/video.js +29 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -204,7 +204,7 @@ Música (sapiens_musicator) é fluxo de 4 passos, EM ORDEM:
|
|
|
204
204
|
4. get passe o trackId e fique polando o status até 'ready' (ou 'failed').
|
|
205
205
|
Pular pro lyrics/render sem create, ou sem os campos, sempre falha.
|
|
206
206
|
|
|
207
|
-
Vídeo (sapiens_video) action=create EXIGE 'model': sapiens-video-seedance | kling | wan | kling-motion | lite | fast | quality | omni. Sem model, falha de cara. O 'omni' (Gemini Omni) gera clipe de 10s 720p com áudio nativo a partir de TEXTO (não aceita imagem/vídeo do user, ignora duração/resolução) e EDITA os próprios vídeos: passe editOfImageId com o imageId de um vídeo Omni já gerado e o prompt vira instrução de edição sobre a MESMA cena (troca item/personagem, preserva câmera e ambiente; cada edição debita como geração nova). É o caminho pra variações com continuidade: gera a base uma vez, edita N vezes. Vídeo é o mais caro: confirme com o usuário antes. Vitrine dos demos (sem custo): sapiens_video action=demos lista seus demo films com slug; action=showcase (slug + showcase=true/false + showcaseTag + showcaseOrder) cura o mini-cinema da /conectar-claude. FILMES DA CASA (Estúdio de Vídeo, tela /experimentos/films): são OUTRA coisa, três kinds na tabela videoSpecs: demo (UI clonada + câmera), aula-tour (telas reais + narração) e essay (fita-ensaio abstrata: partícula/tinta vira símbolo, com a logo explodindo no fim; narração da casa OPCIONAL, sai em 16:9 ou 9:16 vertical, e o filme final é limpo, sem rótulos de produção). Eles NÃO são gerados por este MCP: o user monta o spec na tela e um agente local (Claude Code, skill /film) produz o mp4 no repo da casa. Se o user pedir 'fita-ensaio' ou 'demo film' aqui, aponte pra tela e pro agente local.
|
|
207
|
+
Vídeo (sapiens_video) action=create EXIGE 'model': sapiens-video-seedance | kling | wan | kling-motion | lite | fast | quality | omni. Sem model, falha de cara. O 'omni' (Gemini Omni) gera clipe de 10s 720p com áudio nativo a partir de TEXTO (não aceita imagem/vídeo do user, ignora duração/resolução) e EDITA os próprios vídeos: passe editOfImageId com o imageId de um vídeo Omni já gerado e o prompt vira instrução de edição sobre a MESMA cena (troca item/personagem, preserva câmera e ambiente; cada edição debita como geração nova). É o caminho pra variações com continuidade: gera a base uma vez, edita N vezes. Vídeo é o mais caro: confirme com o usuário antes. action=shadows (ADMIN, 200 Sinapses/segundo, refund na falha): passa videoUrl (URL pública) + title (+ durationSec se souber, pra cobrar proporcional; sem ela, flat ~2000) e o servidor extrai a SOMBRA (mapa de profundidade) do vídeo e guarda no Acervo (Corpo) como deepshadow reutilizável (driving pro Shot Mimic/Kling Motion). Vitrine dos demos (sem custo): sapiens_video action=demos lista seus demo films com slug; action=showcase (slug + showcase=true/false + showcaseTag + showcaseOrder) cura o mini-cinema da /conectar-claude. FILMES DA CASA (Estúdio de Vídeo, tela /experimentos/films): são OUTRA coisa, três kinds na tabela videoSpecs: demo (UI clonada + câmera), aula-tour (telas reais + narração) e essay (fita-ensaio abstrata: partícula/tinta vira símbolo, com a logo explodindo no fim; narração da casa OPCIONAL, sai em 16:9 ou 9:16 vertical, e o filme final é limpo, sem rótulos de produção). Eles NÃO são gerados por este MCP: o user monta o spec na tela e um agente local (Claude Code, skill /film) produz o mp4 no repo da casa. Se o user pedir 'fita-ensaio' ou 'demo film' aqui, aponte pra tela e pro agente local.
|
|
208
208
|
|
|
209
209
|
Imagem (sapiens_image) action=generate: prompt + model + aspectRatio. Referência via referenceImageUrls (galeria/Acervo/personagens) e/ou sourceImageIds. templateSlug aplica um super-prompt travado da casa.
|
|
210
210
|
|
|
@@ -226,7 +226,7 @@ Mídia no Fórum (PADRÃO, faça sempre assim): a peça vai EMBEDADA num card es
|
|
|
226
226
|
Trilhas e Ritos de Fogo (sapiens_trilhas): 'list'/'get' pra navegar as trilhas; 'list_challenges' mostra os Ritos ativos + seu status; 'claim_mission' (missionId + proofText) envia a prova pra revisão do dono — o crédito em Sinapses sai na aprovação dele, não na hora. Não prometa Sinapse na hora do claim.
|
|
227
227
|
|
|
228
228
|
Voz da casa: 1ª pessoa, direto, anti-corporate, sem travessão. Pra bom entendedor, meia palavra basta.`;
|
|
229
|
-
const server = new Server({ name: "mcp-sapiens", version: "1.
|
|
229
|
+
const server = new Server({ name: "mcp-sapiens", version: "1.27.0" }, { capabilities: { tools: {} }, instructions: SAPIENS_INSTRUCTIONS });
|
|
230
230
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
231
231
|
tools: Object.entries(TOOLS).map(([name, t]) => ({
|
|
232
232
|
name,
|
|
@@ -259,4 +259,4 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
259
259
|
});
|
|
260
260
|
const transport = new StdioServerTransport();
|
|
261
261
|
await server.connect(transport);
|
|
262
|
-
console.error("mcp-sapiens v1.
|
|
262
|
+
console.error("mcp-sapiens v1.27.0 rodando via stdio (27 tools)");
|
package/dist/tools/video.js
CHANGED
|
@@ -13,6 +13,9 @@ import { convexAction, convexQuery, convexMutation, getSessionToken } from "../c
|
|
|
13
13
|
* - showcase: põe/tira um demo film (por slug) da vitrine /conectar-claude, com
|
|
14
14
|
* chip (showcaseTag) e ordem (showcaseOrder). Só entra na vitrine
|
|
15
15
|
* pública se for a conta da casa. Sem custo.
|
|
16
|
+
* - shadows: (ADMIN) extrai a SOMBRA (mapa de profundidade) de um vídeo por
|
|
17
|
+
* URL e guarda no Acervo (Corpo) como deepshadow reutilizável.
|
|
18
|
+
* 200 Sinapses/segundo (durationSec; sem ela, flat 2000). Refund se falhar.
|
|
16
19
|
*
|
|
17
20
|
* Modelos (action=create):
|
|
18
21
|
* - sapiens-video-seedance Seedance 2.0 — cena com áudio nativo, 4-15s, 480/720/1080p (t2v/i2v)
|
|
@@ -46,7 +49,16 @@ const VIDEO_MODELS = [
|
|
|
46
49
|
"sapiens-video-omni",
|
|
47
50
|
];
|
|
48
51
|
export const videoSchema = z.object({
|
|
49
|
-
action: z.enum(["create", "generate", "demos", "showcase"]),
|
|
52
|
+
action: z.enum(["create", "generate", "demos", "showcase", "shadows"]),
|
|
53
|
+
// --- action=shadows (deepshadows: extrai o mapa de profundidade de um vídeo) ---
|
|
54
|
+
videoUrl: z
|
|
55
|
+
.string()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("action=shadows: URL pública (http/https) do vídeo-fonte. O servidor extrai a SOMBRA (depth) e guarda no Acervo (Corpo). ADMIN, 200 Sinapses/segundo (refund na falha)."),
|
|
58
|
+
title: z
|
|
59
|
+
.string()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("action=shadows: nome do deepshadow (vira o slug no Acervo; re-extrair o mesmo título sobrescreve). Mín. 3 chars."),
|
|
50
62
|
// --- action=showcase (curadoria da vitrine /conectar-claude) ---
|
|
51
63
|
slug: z
|
|
52
64
|
.string()
|
|
@@ -78,7 +90,8 @@ export const videoSchema = z.object({
|
|
|
78
90
|
.number()
|
|
79
91
|
.optional()
|
|
80
92
|
.describe("action=create (modelos WaveSpeed): duração em segundos. Seedance/Shot Mimic 4-15, Kling 3-15, WAN 5/10. " +
|
|
81
|
-
"Sem isso usa a config mais barata. O preço escala com a duração."
|
|
93
|
+
"Sem isso usa a config mais barata. O preço escala com a duração. " +
|
|
94
|
+
"action=shadows: duração do vídeo-fonte, se souber (cobra 200/s; sem ela, flat ~2000)."),
|
|
82
95
|
resolution: z
|
|
83
96
|
.enum(["480p", "720p", "1080p"])
|
|
84
97
|
.optional()
|
|
@@ -181,6 +194,20 @@ export async function video(args) {
|
|
|
181
194
|
editOfImageId: args.editOfImageId,
|
|
182
195
|
});
|
|
183
196
|
}
|
|
197
|
+
if (args.action === "shadows") {
|
|
198
|
+
if (!args.videoUrl) {
|
|
199
|
+
throw new Error("action=shadows exige videoUrl (URL pública do vídeo-fonte).");
|
|
200
|
+
}
|
|
201
|
+
if (!args.title || args.title.trim().length < 3) {
|
|
202
|
+
throw new Error("action=shadows exige title (mín. 3 chars; vira o slug do deepshadow).");
|
|
203
|
+
}
|
|
204
|
+
return await convexAction("mcpExtrasActions:mcpExtractShadows", {
|
|
205
|
+
sessionToken,
|
|
206
|
+
videoUrl: args.videoUrl,
|
|
207
|
+
title: args.title,
|
|
208
|
+
durationSec: args.durationSec,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
184
211
|
if (args.action === "generate") {
|
|
185
212
|
if (!args.imageId) {
|
|
186
213
|
throw new Error("action=generate exige imageId (vídeo já criado no site).");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sapiens-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.27.0",
|
|
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": {
|