sapiens-mcp 1.24.6 → 1.25.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 CHANGED
@@ -84,7 +84,7 @@ const TOOLS = {
84
84
  handler: search,
85
85
  },
86
86
  sapiens_studios: {
87
- description: "Catálogo dos estúdios/experimentos Sapiens (v1.3, atualizado v1.4). Sub-actions: list (todos com URL+status+tags+mcpReady), get (detalhe de 1 slug), publishable_url (formata URL /articles/<slug>). Use quando user pergunta 'que estúdios existem'. Estúdios cobertos: helen-voice (v1.4 mcpReady), musicator (v1.4 mcpReady), persona-sapiens (teste de autoconhecimento + arte, mcpReady), personagem-atlas (dossiê de personagem, UI-only), sapiens-shorts, sapiens-video, cena-visual, text-post-builder, comic-builder (tirinha/quadrinho, mcpReady via pipeline format=tirinha + sapiens_image), carrosel-editorial, comunidade, repertorio.",
87
+ description: "Catálogo dos estúdios/experimentos Sapiens + o SEU studio + a Emancipação. Sub-actions: mine (o Meu Studio do user: nível/marca/operador/ferramentas), list (todos com URL+status+tags+mcpReady), get (detalhe de 1 slug), publishable_url (formata URL /articles/<slug>), emancipar (INICIA o Nível 3: blueprint pra construir a casa PRÓPRIA do membro na infra dele, fora do Sapiens), module (guia de um módulo de infra: fundacao/sapiens-connect/telegram/email/auth). Use quando user pergunta 'que estúdios existem', 'qual o meu studio', ou 'quero montar meu site/minha casa própria'. Estúdios cobertos: helen-voice, musicator, persona-sapiens, personagem-atlas, sapiens-shorts, sapiens-video, cena-visual, text-post-builder, comic-builder, carrosel-editorial, comunidade, repertorio.",
88
88
  schema: studiosSchema,
89
89
  handler: studios,
90
90
  },
@@ -206,6 +206,7 @@ SEU STUDIO vs geração BASE (não confunda, é o ponto): o usuário tem UM "Meu
206
206
  - Criar SEGUINDO o studio (na cara dele): sapiens_image com useStudio=true. O servidor acha o studio e aplica marca + personagem + vibe + presets sozinho (o que você passar explícito vence). O retorno traz studioApplied=true. Use quando ele diz "no meu studio", "na minha marca", "do meu jeito", "como sempre".
207
207
  - Geração AVULSA (Sapiens base, sem a identidade dele): sapiens_image SEM useStudio (studioApplied=false). Pra teste solto ou pedido fora da identidade. Não misture: ou é studio, ou é base.
208
208
  - Antes de criar no studio, cheque com sapiens_studios action=mine (nível, marca, operador, ferramentas, a vibe da imagem). Se você pediu useStudio e voltar studioApplied=false, o user não tem studio montado: avise e aponte /dashboard/studio. Gerar no studio faz ele evoluir de nível.
209
+ - EMANCIPAÇÃO (Nível 3, o passo grande): quando o membro quer a casa PRÓPRIA dele (site/produto próprio, FORA do Sapiens), use sapiens_studios action=emancipar. Ele devolve o blueprint pra VOCÊ construir na infra DO MEMBRO (Vercel + Convex + domínio dele), começando pela Fundação e seguindo um módulo por vez (action=module module=<slug>). Confirme cada passo, nunca hospede no Sapiens, siga o gosto dele. É complexo: conduza com calma.
209
210
 
210
211
  Tirinha / Comic (sapiens_pipeline format=tirinha + sapiens_image): fluxo de 2 FASES, decida o MODO antes de gerar pixel.
211
212
  FASE 1 (roteiro): monte 3-6 painéis, cada um com a CENA visual e a FALA/legenda SEPARADAS. Salve em sapiens_pipeline create_production format=tirinha. O texto dos balões mora no payload (campos dialogue/caption), NUNCA dentro da imagem.
@@ -219,7 +220,7 @@ Mídia no Fórum (PADRÃO, faça sempre assim): a peça vai EMBEDADA num card es
219
220
  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.
220
221
 
221
222
  Voz da casa: 1ª pessoa, direto, anti-corporate, sem travessão. Pra bom entendedor, meia palavra basta.`;
222
- const server = new Server({ name: "mcp-sapiens", version: "1.24.6" }, { capabilities: { tools: {} }, instructions: SAPIENS_INSTRUCTIONS });
223
+ const server = new Server({ name: "mcp-sapiens", version: "1.25.0" }, { capabilities: { tools: {} }, instructions: SAPIENS_INSTRUCTIONS });
223
224
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
224
225
  tools: Object.entries(TOOLS).map(([name, t]) => ({
225
226
  name,
@@ -252,4 +253,4 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
252
253
  });
253
254
  const transport = new StdioServerTransport();
254
255
  await server.connect(transport);
255
- console.error("mcp-sapiens v1.24.6 rodando via stdio (27 tools)");
256
+ console.error("mcp-sapiens v1.25.0 rodando via stdio (27 tools)");
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { convexAction, getSessionToken } from "../convexClient.js";
2
+ import { convexAction, convexQuery, getSessionToken } from "../convexClient.js";
3
3
  /**
4
4
  * Catálogo dos estúdios/experimentos Sapiens (v1.3).
5
5
  *
@@ -14,12 +14,18 @@ import { convexAction, getSessionToken } from "../convexClient.js";
14
14
  */
15
15
  export const studiosSchema = z.object({
16
16
  action: z
17
- .enum(["list", "get", "publishable_url", "mine"])
18
- .describe("mine = o SEU studio ('Meu Studio', singular): nível, marca, operador e ferramentas, pra você gerar com useStudio. list/get = catálogo de estúdios da casa. publishable_url = URL de artigo."),
17
+ .enum(["list", "get", "publishable_url", "mine", "emancipar", "module"])
18
+ .describe("mine = o SEU studio ('Meu Studio', singular): nível, marca, operador e ferramentas, pra você gerar com useStudio. list/get = catálogo de estúdios da casa. publishable_url = URL de artigo. " +
19
+ "emancipar = INICIA a Emancipação (Nível 3 do Studio): puxa o blueprint-mestre pra VOCÊ (Claude) construir a casa PRÓPRIA do membro, na infra DELE (Vercel + Convex + domínio dele), FORA do Sapiens. Devolve a identidade do studio dele já hidratada + o índice de módulos + o guia da Fundação. " +
20
+ "module = puxa o guia de UM módulo de infra pra continuar a construção (ex: fundacao, sapiens-connect, telegram, email, auth)."),
19
21
  studio: z
20
22
  .string()
21
23
  .optional()
22
24
  .describe("Pra action=get: slug do estúdio (ex 'helen-voice', 'musicator', 'persona-sapiens', 'sapiens-shorts')."),
25
+ module: z
26
+ .string()
27
+ .optional()
28
+ .describe("Pra action=module: slug do módulo de infra da emancipação. Prontos (com guia): fundacao, sapiens-connect, telegram, email, auth. Chegando (no índice, sem guia ainda): pagamentos, analytics."),
23
29
  publishableId: z
24
30
  .string()
25
31
  .optional()
@@ -201,4 +207,28 @@ export async function studios(args) {
201
207
  : "publishableId lookup ainda não suportado v1.3. Passe slug.",
202
208
  };
203
209
  }
210
+ // action=emancipar: o blueprint-mestre da Emancipação (Nível 3). O membro sai
211
+ // da casa do Sapiens e monta a PRÓPRIA, na infra dele, guiado pelo Claude dele.
212
+ if (args.action === "emancipar") {
213
+ const sessionToken = getSessionToken();
214
+ const res = await convexQuery("studioBlueprints:mcpEmanciparBlueprint", { sessionToken });
215
+ if (!res?.ok)
216
+ return res; // { ok:false, error } — ex: sem studio montado ainda
217
+ return {
218
+ ...res,
219
+ howto: "Blueprint-mestre da Emancipação (Nível 3). VOCÊ (o Claude do membro) constrói a casa dele NUMA PASTA NOVA, fora deste projeto, com Vercel + Convex + domínio DO MEMBRO. O Sapiens NÃO hospeda a casa. Conduza assim: (1) leia o `blueprint` (guia da Fundação) e execute passo a passo, confirmando com o membro ANTES de criar conta ou gastar (domínio); (2) o selo <meta name=\"sapiens-studio\"> é OBRIGATÓRIO pra verificação; (3) com a casa no ar, o membro submete a URL no Sapiens (Rito 'Studio no Ar', que paga Sinapses); (4) pra cada próximo módulo do `modules` que estiver 'ready', chame sapiens_studios action=module module=<slug>. Um módulo por vez, sem atropelar. É um passo grande: vá com calma e no gosto do membro.",
220
+ };
221
+ }
222
+ // action=module: o guia de UM módulo de infra, hidratado com a identidade do
223
+ // studio do membro. Chame depois da fundacao, um por vez.
224
+ if (args.action === "module") {
225
+ if (!args.module) {
226
+ throw new Error("action=module exige 'module' (slug do módulo de infra: fundacao, sapiens-connect, telegram, email, auth).");
227
+ }
228
+ const sessionToken = getSessionToken();
229
+ return await convexQuery("studioBlueprints:mcpModuleBlueprint", {
230
+ sessionToken,
231
+ module: args.module,
232
+ });
233
+ }
204
234
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sapiens-mcp",
3
- "version": "1.24.6",
3
+ "version": "1.25.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": {