@semacode/cli 1.5.11 → 1.5.14

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 (28) hide show
  1. package/README.md +4 -0
  2. package/dist/index.js +381 -0
  3. package/dist/index.js.map +1 -1
  4. package/docs/cli.md +7 -0
  5. package/docs/sintaxe.md +166 -0
  6. package/node_modules/@sema/gerador-css/package.json +1 -1
  7. package/node_modules/@sema/gerador-dart/package.json +1 -1
  8. package/node_modules/@sema/gerador-html/package.json +1 -1
  9. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  10. package/node_modules/@sema/gerador-lua/package.json +1 -1
  11. package/node_modules/@sema/gerador-python/package.json +1 -1
  12. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  13. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +3 -1
  14. package/node_modules/@sema/nucleo/dist/formatador/index.js +40 -13
  15. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  16. package/node_modules/@sema/nucleo/dist/ir/conversor.js +178 -3
  17. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  18. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +32 -0
  19. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +21 -0
  20. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  21. package/node_modules/@sema/nucleo/dist/parser/parser.js +36 -0
  22. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  23. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -1
  24. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +307 -12
  25. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  26. package/node_modules/@sema/nucleo/package.json +1 -1
  27. package/node_modules/@sema/padroes/package.json +1 -1
  28. package/package.json +14 -14
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parser/parser.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type Diagnostico } from "../diagnosticos/index.js";
2
2
  import type { ModuloAst } from "../ast/tipos.js";
3
3
  export interface SimboloSemantico {
4
4
  nome: string;
5
- categoria: "tipo" | "entity" | "enum" | "task" | "flow" | "route" | "state" | "worker" | "evento" | "fila" | "cron" | "webhook" | "cache" | "storage" | "policy" | "database";
5
+ categoria: "tipo" | "entity" | "enum" | "task" | "flow" | "route" | "book" | "work" | "part" | "chapter" | "section" | "scene" | "character" | "arc" | "audience" | "thesis" | "argument" | "claim" | "source" | "concept" | "example" | "voice" | "style_rule" | "lexicon" | "motif" | "canon" | "agent" | "state" | "worker" | "evento" | "fila" | "cron" | "webhook" | "cache" | "storage" | "policy" | "database";
6
6
  }
7
7
  export interface CampoSemantico {
8
8
  nome: string;
@@ -38,6 +38,7 @@ export interface ContextoSemantico {
38
38
  simbolos: Map<string, SimboloSemantico>;
39
39
  tiposConhecidos: Set<string>;
40
40
  tasksConhecidas: Set<string>;
41
+ agentsConhecidos: Set<string>;
41
42
  tarefasDetalhadas: Map<string, ResumoTaskSemantico>;
42
43
  statesConhecidos: Map<string, {
43
44
  transicoes: Set<string>;
@@ -90,6 +90,54 @@ const CAMPOS_ERRO_OPERACIONAL = new Set([
90
90
  "requer_compensacao",
91
91
  ]);
92
92
  const CRITICIDADES_OPERACIONAIS = new Set(["baixa", "media", "alta", "critica"]);
93
+ const TIPOS_AUTHOR_PROFILE = new Set([
94
+ "book",
95
+ "work",
96
+ "part",
97
+ "chapter",
98
+ "section",
99
+ "scene",
100
+ "character",
101
+ "arc",
102
+ "audience",
103
+ "thesis",
104
+ "argument",
105
+ "claim",
106
+ "source",
107
+ "concept",
108
+ "example",
109
+ "voice",
110
+ "style_rule",
111
+ "lexicon",
112
+ "motif",
113
+ "canon",
114
+ ]);
115
+ const TERMOS_AUTHOR_SENSIVEIS = [
116
+ "autismo",
117
+ "autista",
118
+ "autistas",
119
+ "tea",
120
+ "neurodiversidade",
121
+ "neurodivergencia",
122
+ "neurodivergente",
123
+ "saude",
124
+ "clinico",
125
+ "clinica",
126
+ "medico",
127
+ "medica",
128
+ "diagnostico",
129
+ "diagnosticar",
130
+ "terapia",
131
+ "tratamento",
132
+ "medicamento",
133
+ "psicologia",
134
+ "psiquiatria",
135
+ "educacao inclusiva",
136
+ "inclusao escolar",
137
+ "juridico",
138
+ "legal",
139
+ "financeiro",
140
+ ];
93
141
  const PADRAO_CAMINHO_INTEROP = /^[A-Za-z_][A-Za-z0-9_-]*(\.[A-Za-z_][A-Za-z0-9_-]*)*$/;
94
142
  function normalizarOrigemImplementacao(valor) {
95
143
  switch (valor.toLowerCase()) {
@@ -155,6 +203,17 @@ function localizarBloco(corpo, nome) {
155
203
  }
156
204
  return corpo.blocos.find((bloco) => bloco.tipo === "bloco_generico" && (bloco.palavraChave === nome || bloco.nome === nome));
157
205
  }
206
+ function nomeBlocoDeclarativo(bloco) {
207
+ return bloco.palavraChave === "desconhecido"
208
+ ? (bloco.nome ?? "desconhecido")
209
+ : bloco.palavraChave;
210
+ }
211
+ function blocoTemNome(bloco, nomes) {
212
+ return nomes.includes(nomeBlocoDeclarativo(bloco).toLowerCase());
213
+ }
214
+ function localizarBlocoPorNomes(corpo, ...nomes) {
215
+ return corpo?.blocos.find((bloco) => bloco.tipo === "bloco_generico" && blocoTemNome(bloco, nomes));
216
+ }
158
217
  function localizarCampo(bloco, ...nomes) {
159
218
  if (!bloco) {
160
219
  return undefined;
@@ -884,7 +943,16 @@ function validarInvariantesDeCampos(bloco, nomeBloco, diagnosticos) {
884
943
  dicaReferencia: "Referencie apenas campos declarados no proprio bloco ao escrever invariantes de dominio.",
885
944
  });
886
945
  }
887
- function validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos) {
946
+ function referenciaAgentConhecida(referencia, agentsConhecidos) {
947
+ if (agentsConhecidos.has(referencia)) {
948
+ return true;
949
+ }
950
+ return referencia.startsWith("agent.") && agentsConhecidos.has(referencia.slice("agent.".length));
951
+ }
952
+ function referenciaOperadorFlowConhecida(referencia, tasksConhecidas, agentsConhecidos) {
953
+ return tasksConhecidas.has(referencia) || referenciaAgentConhecida(referencia, agentsConhecidos);
954
+ }
955
+ function validarFlow(flow, tasksConhecidas, agentsConhecidos, tarefasDetalhadas, diagnosticos) {
888
956
  const possuiEtapas = flow.corpo.linhas.length > 0 || flow.corpo.campos.length > 0 || flow.corpo.blocos.length > 0;
889
957
  if (!possuiEtapas) {
890
958
  diagnosticos.push(criarDiagnostico("SEM012", `Flow "${flow.nome}" precisa declarar ao menos uma etapa.`, "erro", flow.intervalo, "Adicione linhas declarativas, campos ou subblocos dentro de flow."));
@@ -898,8 +966,8 @@ function validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos) {
898
966
  .filter((campo) => campo.nome === "task" || campo.nome === "tarefa")
899
967
  .map((campo) => campo.valor);
900
968
  for (const tarefa of tarefasReferenciadas) {
901
- if (!tasksConhecidas.has(tarefa)) {
902
- diagnosticos.push(criarDiagnostico("SEM013", `Flow "${flow.nome}" referencia task "${tarefa}" que nao existe.`, "erro", flow.intervalo, "Declare a task no mesmo modulo ou ajuste a referencia do flow."));
969
+ if (!referenciaOperadorFlowConhecida(tarefa, tasksConhecidas, agentsConhecidos)) {
970
+ diagnosticos.push(criarDiagnostico("SEM013", `Flow "${flow.nome}" referencia operador "${tarefa}" que nao existe.`, "erro", flow.intervalo, "Declare a task ou agent no mesmo modulo, ou ajuste a referencia do flow."));
903
971
  }
904
972
  }
905
973
  const etapas = flow.corpo.linhas
@@ -919,11 +987,16 @@ function validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos) {
919
987
  }
920
988
  nomesEtapas.add(item.etapa.nome);
921
989
  etapasValidas.set(item.etapa.nome, item.etapa);
922
- if (item.etapa.task && !tasksConhecidas.has(item.etapa.task)) {
923
- const sugestoesTasks = descreverSugestoes(tasksConhecidas, "Tasks conhecidas no contexto");
924
- diagnosticos.push(criarDiagnostico("SEM034", `Etapa "${item.etapa.nome}" do flow "${flow.nome}" usa task "${item.etapa.task}" que nao existe.`, "erro", item.linha.intervalo, sugestoesTasks ?? "Ajuste a task da etapa para apontar para uma task declarada ou importada."));
925
- }
926
- if (item.etapa.task) {
990
+ const etapaUsaTask = Boolean(item.etapa.task && tasksConhecidas.has(item.etapa.task));
991
+ const etapaUsaAgent = Boolean(item.etapa.task && referenciaAgentConhecida(item.etapa.task, agentsConhecidos));
992
+ if (item.etapa.task && !etapaUsaTask && !etapaUsaAgent) {
993
+ const sugestoesOperadores = [
994
+ descreverSugestoes(tasksConhecidas, "Tasks conhecidas no contexto"),
995
+ descreverSugestoes(agentsConhecidos, "Agents conhecidos no contexto"),
996
+ ].filter(Boolean).join(" ");
997
+ diagnosticos.push(criarDiagnostico("SEM034", `Etapa "${item.etapa.nome}" do flow "${flow.nome}" usa operador "${item.etapa.task}" que nao existe.`, "erro", item.linha.intervalo, sugestoesOperadores || "Ajuste a etapa para apontar para uma task ou agent declarado/importado."));
998
+ }
999
+ if (item.etapa.task && etapaUsaTask) {
927
1000
  const detalhesTask = tarefasDetalhadas.get(item.etapa.task);
928
1001
  if (detalhesTask) {
929
1002
  const indiceInput = indicesCampos(detalhesTask.input);
@@ -963,8 +1036,12 @@ function validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos) {
963
1036
  if (item.etapa.condicao) {
964
1037
  const referencias = extrairReferenciasDaExpressao(item.etapa.condicao).map((referencia) => extrairRaiz(referencia));
965
1038
  for (const referencia of referencias) {
966
- if (!ehMarcadorSemantico(referencia) && !tasksConhecidas.has(referencia) && !nomesEtapas.has(referencia) && !contextoFlow.has(referencia)) {
967
- diagnosticos.push(criarDiagnostico("SEM035", `Condicao da etapa "${item.etapa.nome}" em flow "${flow.nome}" referencia "${referencia}" fora do contexto atual.`, "erro", item.linha.intervalo, "No MVP atual, condicoes de flow devem apontar para marcadores semanticos, campos do flow, tasks conhecidas ou etapas anteriores."));
1039
+ if (!ehMarcadorSemantico(referencia)
1040
+ && !tasksConhecidas.has(referencia)
1041
+ && !referenciaAgentConhecida(referencia, agentsConhecidos)
1042
+ && !nomesEtapas.has(referencia)
1043
+ && !contextoFlow.has(referencia)) {
1044
+ diagnosticos.push(criarDiagnostico("SEM035", `Condicao da etapa "${item.etapa.nome}" em flow "${flow.nome}" referencia "${referencia}" fora do contexto atual.`, "erro", item.linha.intervalo, "Condicoes de flow devem apontar para marcadores semanticos, campos do flow, tasks, agents ou etapas anteriores."));
968
1045
  }
969
1046
  }
970
1047
  }
@@ -985,7 +1062,7 @@ function validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos) {
985
1062
  diagnosticos.push(criarDiagnostico("SEM045", `Etapa "${item.etapa.nome}" do flow "${flow.nome}" aponta para "${destino}" em ramificacao, mas essa etapa nao foi declarada.`, "erro", item.linha.intervalo, sugestoesEtapas ?? "Declare a etapa de destino no mesmo flow antes de usa-la em em_sucesso ou em_erro."));
986
1063
  }
987
1064
  }
988
- if (item.etapa.task) {
1065
+ if (item.etapa.task && tasksConhecidas.has(item.etapa.task)) {
989
1066
  const detalhesTask = tarefasDetalhadas.get(item.etapa.task);
990
1067
  const indiceErrors = indiceErros(detalhesTask?.errors ?? []);
991
1068
  for (const rotaErro of item.etapa.porErro) {
@@ -1189,10 +1266,187 @@ function validarGuardrailsSeguranca(modulo, diagnosticos) {
1189
1266
  }
1190
1267
  }
1191
1268
  }
1269
+ function valoresDeclarativos(bloco) {
1270
+ if (!bloco) {
1271
+ return [];
1272
+ }
1273
+ return [
1274
+ ...bloco.linhas.map((linha) => linha.conteudo),
1275
+ ...bloco.campos.map((campo) => valorCampoCompleto(campo) ?? campo.nome),
1276
+ ].filter((valor) => valor.trim().length > 0);
1277
+ }
1278
+ function valoresDeclarativosProfundos(bloco) {
1279
+ if (!bloco) {
1280
+ return [];
1281
+ }
1282
+ return [
1283
+ nomeBlocoDeclarativo(bloco),
1284
+ bloco.nome ?? "",
1285
+ ...valoresDeclarativos(bloco),
1286
+ ...bloco.campos.flatMap((campo) => [campo.nome, campo.valor, ...campo.modificadores]),
1287
+ ...bloco.blocos.flatMap((filho) => filho.tipo === "bloco_generico" ? valoresDeclarativosProfundos(filho) : []),
1288
+ ].filter((valor) => valor.trim().length > 0);
1289
+ }
1290
+ function normalizarTextoAuthorSensivel(valor) {
1291
+ return valor
1292
+ .normalize("NFD")
1293
+ .replace(/[\u0300-\u036f]/g, "")
1294
+ .toLowerCase()
1295
+ .replace(/[_\W]+/g, " ")
1296
+ .replace(/\s+/g, " ")
1297
+ .trim();
1298
+ }
1299
+ function textoContemTermoAuthorSensivel(valor) {
1300
+ const texto = ` ${normalizarTextoAuthorSensivel(valor)} `;
1301
+ return TERMOS_AUTHOR_SENSIVEIS.some((termo) => {
1302
+ const termoNormalizado = normalizarTextoAuthorSensivel(termo);
1303
+ if (termoNormalizado.length <= 3) {
1304
+ return texto.includes(` ${termoNormalizado} `);
1305
+ }
1306
+ return texto.includes(termoNormalizado);
1307
+ });
1308
+ }
1309
+ function blocoAuthorMarcaSensivel(bloco) {
1310
+ const campoSensivel = localizarCampo(bloco, "sensivel", "sensitive", "tema_sensivel");
1311
+ const valorSensivel = normalizarTextoAuthorSensivel(valorCampoCompleto(campoSensivel) ?? "");
1312
+ if (["verdadeiro", "true", "sim", "alto", "alta", "critico", "critica"].includes(valorSensivel)) {
1313
+ return true;
1314
+ }
1315
+ return valoresDeclarativosProfundos(bloco).some(textoContemTermoAuthorSensivel);
1316
+ }
1317
+ function coletarAuthorBlocksPorTipo(modulo, tipos) {
1318
+ return modulo.authorBlocks.filter((bloco) => tipos.includes(nomeBlocoDeclarativo(bloco)));
1319
+ }
1320
+ function coletarSubblocosPorNomes(bloco, nomes) {
1321
+ return bloco.blocos.filter((item) => item.tipo === "bloco_generico" && blocoTemNome(item, nomes));
1322
+ }
1323
+ function validarSubblocoNaoVazio(bloco, diagnosticos, codigo, contexto) {
1324
+ if (bloco.campos.length > 0 || bloco.linhas.length > 0 || bloco.blocos.length > 0) {
1325
+ return;
1326
+ }
1327
+ diagnosticos.push(criarDiagnostico(codigo, `${contexto} declarou "${nomeBlocoDeclarativo(bloco)}" vazio.`, "erro", bloco.intervalo, "Declare ao menos uma linha ou campo para que o guardrail seja verificavel por IA."));
1328
+ }
1329
+ function validarAuthorBlock(bloco, diagnosticos) {
1330
+ const tipo = nomeBlocoDeclarativo(bloco);
1331
+ const contexto = `${tipo} "${bloco.nome ?? tipo}"`;
1332
+ if (["book", "work"].includes(tipo) && !localizarCampo(bloco, "titulo", "title", "proposito", "purpose")) {
1333
+ diagnosticos.push(criarDiagnostico("SEM120", `${contexto} deveria declarar titulo ou proposito para ancorar a obra autoral.`, "aviso", bloco.intervalo, "Use titulo/title para nome editorial ou proposito/purpose para livro tecnico, ensaio, manual ou obra nao ficcional."));
1334
+ }
1335
+ if (["chapter", "section"].includes(tipo) && !localizarCampo(bloco, "intent", "intencao", "objetivo", "purpose")) {
1336
+ diagnosticos.push(criarDiagnostico("SEM121", `${contexto} deveria declarar intencao ou objetivo.`, "aviso", bloco.intervalo, "Declare intent/intencao/objetivo para que a IA nao preencha a secao com texto generico."));
1337
+ }
1338
+ if (tipo === "scene" && !localizarCampo(bloco, "pov", "ponto_de_vista")) {
1339
+ diagnosticos.push(criarDiagnostico("SEM122", `${contexto} deveria declarar pov para preservar continuidade narrativa.`, "aviso", bloco.intervalo, "Use pov ou ponto_de_vista quando a obra tiver cenas narrativas."));
1340
+ }
1341
+ if (tipo === "voice" && !localizarCampo(bloco, "tom", "tone", "registro", "ritmo")) {
1342
+ diagnosticos.push(criarDiagnostico("SEM123", `${contexto} deveria declarar tom, registro ou ritmo.`, "aviso", bloco.intervalo, "Declare a voz da obra para reduzir texto raso, repetitivo ou com cara de IA."));
1343
+ }
1344
+ if (tipo === "claim" && !localizarCampo(bloco, "source", "fonte", "evidencia", "confidence", "confianca")) {
1345
+ diagnosticos.push(criarDiagnostico("SEM124", `${contexto} deveria declarar fonte, evidencia ou confianca.`, "aviso", bloco.intervalo, "Claims de nao-ficcao precisam de rastreio para diferenciar argumento, opiniao e evidencia."));
1346
+ }
1347
+ if (tipo === "style_rule") {
1348
+ const guardrails = coletarSubblocosPorNomes(bloco, ["forbidden", "proibido", "avoid", "evitar", "echo", "ecos"]);
1349
+ const tolerancia = localizarBlocoPorNomes(bloco, "tolerancia", "tolerance");
1350
+ if (guardrails.length === 0 && !tolerancia && bloco.campos.length === 0 && bloco.linhas.length === 0) {
1351
+ diagnosticos.push(criarDiagnostico("SEM125", `${contexto} precisa declarar proibicoes, ecos, tolerancia ou preferencias.`, "erro", bloco.intervalo, "Use proibido/forbidden para cliches, echo/ecos para repeticao, evitar/avoid para muletas ou tolerancia para limites."));
1352
+ }
1353
+ for (const guardrail of guardrails) {
1354
+ validarSubblocoNaoVazio(guardrail, diagnosticos, "SEM126", contexto);
1355
+ }
1356
+ const vistos = new Set();
1357
+ for (const guardrail of guardrails) {
1358
+ for (const valor of valoresDeclarativos(guardrail)) {
1359
+ const chave = valor.toLowerCase();
1360
+ if (vistos.has(chave)) {
1361
+ diagnosticos.push(criarDiagnostico("SEM127", `${contexto} repetiu o guardrail de estilo "${valor}".`, "aviso", guardrail.intervalo, "Remova duplicatas para manter a regra de estilo enxuta."));
1362
+ }
1363
+ vistos.add(chave);
1364
+ }
1365
+ }
1366
+ }
1367
+ }
1368
+ function styleRuleTemProibicoes(bloco) {
1369
+ return coletarSubblocosPorNomes(bloco, ["forbidden", "proibido", "avoid", "evitar"]).some((guardrail) => valoresDeclarativos(guardrail).length > 0);
1370
+ }
1371
+ function flowReferenciaAgent(flow, agentsConhecidos) {
1372
+ for (const linha of flow.corpo.linhas) {
1373
+ const etapa = parsearEtapaFlow(linha.conteudo);
1374
+ if (etapa?.task && referenciaAgentConhecida(etapa.task, agentsConhecidos)) {
1375
+ return true;
1376
+ }
1377
+ }
1378
+ const task = localizarCampo(flow.corpo, "task")?.valor;
1379
+ return Boolean(task && referenciaAgentConhecida(task, agentsConhecidos));
1380
+ }
1381
+ function validarAuthorSensivel(modulo, agentsConhecidos, diagnosticos) {
1382
+ if (modulo.authorBlocks.length === 0 || !modulo.authorBlocks.some(blocoAuthorMarcaSensivel)) {
1383
+ return;
1384
+ }
1385
+ const obras = coletarAuthorBlocksPorTipo(modulo, ["book", "work"]);
1386
+ const audiences = coletarAuthorBlocksPorTipo(modulo, ["audience"]);
1387
+ const claims = coletarAuthorBlocksPorTipo(modulo, ["claim"]);
1388
+ const sources = coletarAuthorBlocksPorTipo(modulo, ["source"]);
1389
+ const styleRules = coletarAuthorBlocksPorTipo(modulo, ["style_rule"]);
1390
+ const primeiroBlocoSensivel = modulo.authorBlocks.find(blocoAuthorMarcaSensivel) ?? modulo.authorBlocks[0];
1391
+ const intervaloBase = primeiroBlocoSensivel?.intervalo;
1392
+ if (obras.length === 0) {
1393
+ diagnosticos.push(criarDiagnostico("SEM132", "Author sensivel precisa declarar book/work para ancorar proposito, tipo, publico e limites da obra.", "erro", intervaloBase, "Declare book ou work antes de pedir para a IA criar ou editar material sensivel."));
1394
+ }
1395
+ if (audiences.length === 0) {
1396
+ diagnosticos.push(criarDiagnostico("SEM133", "Author sensivel precisa declarar audience/publico antes da IA escrever ou editar.", "erro", intervaloBase, "Declare se o livro fala com pais, educadores, pessoas autistas, profissionais, publico geral ou outro grupo."));
1397
+ }
1398
+ if (claims.length === 0) {
1399
+ diagnosticos.push(criarDiagnostico("SEM134", "Author sensivel precisa declarar claim para separar fato, argumento, opiniao e promessa editorial.", "erro", intervaloBase, "Declare ao menos um claim para qualquer tese factual que a IA deva sustentar ou revisar."));
1400
+ }
1401
+ if (sources.length === 0) {
1402
+ diagnosticos.push(criarDiagnostico("SEM135", "Author sensivel precisa declarar source/fonte rastreavel.", "erro", intervaloBase, "Declare source para DSM, CID, artigo, livro, guia clinico, entrevista, experiencia autoral ou outra fonte aceita."));
1403
+ }
1404
+ if (styleRules.length === 0) {
1405
+ diagnosticos.push(criarDiagnostico("SEM136", "Author sensivel precisa declarar style_rule para bloquear cliche, infantilizacao, generalizacao e linguagem ruim.", "erro", intervaloBase, "Declare style_rule com proibido/evitar/ecos/tolerancia antes da IA gerar texto."));
1406
+ }
1407
+ if (modulo.agents.length === 0) {
1408
+ diagnosticos.push(criarDiagnostico("SEM137", "Author sensivel precisa declarar agent governado para revisao, fonte, sensibilidade ou estilo.", "erro", intervaloBase, "Declare ao menos um agent com role, goal, tools, memory e policy."));
1409
+ }
1410
+ if (!modulo.flows.some((flow) => flowReferenciaAgent(flow, agentsConhecidos))) {
1411
+ diagnosticos.push(criarDiagnostico("SEM138", "Author sensivel precisa declarar flow chamando agent governado.", "erro", intervaloBase, "Modele etapas como escrever, checar fonte, revisar linguagem, validar sensibilidade e preservar canon."));
1412
+ }
1413
+ for (const claim of claims) {
1414
+ if (!localizarCampo(claim, "source", "fonte", "evidencia")) {
1415
+ diagnosticos.push(criarDiagnostico("SEM139", `Claim sensivel "${claim.nome ?? "claim"}" precisa declarar source/fonte/evidencia.`, "erro", claim.intervalo, "Toda afirmacao factual sensivel precisa apontar fonte ou evidencia antes da IA usar no texto."));
1416
+ }
1417
+ if (!localizarCampo(claim, "confidence", "confianca")) {
1418
+ diagnosticos.push(criarDiagnostico("SEM140", `Claim sensivel "${claim.nome ?? "claim"}" precisa declarar confidence/confianca.`, "erro", claim.intervalo, "Declare o nivel de confianca para a IA diferenciar fato forte, consenso limitado e hipotese."));
1419
+ }
1420
+ }
1421
+ for (const styleRule of styleRules) {
1422
+ if (!styleRuleTemProibicoes(styleRule)) {
1423
+ diagnosticos.push(criarDiagnostico("SEM141", `Style_rule sensivel "${styleRule.nome ?? "style_rule"}" precisa declarar proibido/evitar verificavel.`, "erro", styleRule.intervalo, "Inclua termos, frases ou abordagens proibidas, como infantilizacao, generalizacao, promessa clinica ou cliche."));
1424
+ }
1425
+ }
1426
+ }
1427
+ function validarAgent(agent, diagnosticos) {
1428
+ const nome = agent.nome ?? "agent";
1429
+ if (!localizarCampo(agent, "role", "papel") && !localizarCampo(agent, "goal", "objetivo")) {
1430
+ diagnosticos.push(criarDiagnostico("SEM128", `Agent "${nome}" precisa declarar role/papel ou goal/objetivo.`, "erro", agent.intervalo, "Agente sem objetivo vira prompt solto. Declare role ou goal."));
1431
+ }
1432
+ const tools = localizarBlocoPorNomes(agent, "tools", "ferramentas");
1433
+ if (!tools || valoresDeclarativos(tools).length === 0) {
1434
+ diagnosticos.push(criarDiagnostico("SEM129", `Agent "${nome}" precisa declarar tools/ferramentas.`, "erro", agent.intervalo, "Declare as ferramentas que o agente pode usar para limitar acao e dar rastreabilidade."));
1435
+ }
1436
+ const policy = localizarBlocoPorNomes(agent, "policy", "politica");
1437
+ if (!policy || valoresDeclarativos(policy).length === 0) {
1438
+ diagnosticos.push(criarDiagnostico("SEM130", `Agent "${nome}" precisa declarar policy/politica.`, "erro", agent.intervalo, "Declare limites como nao_reescrever_sem_aprovacao, citar_trechos_afetados ou atualizar_docs_apos_edicao."));
1439
+ }
1440
+ const memory = localizarBlocoPorNomes(agent, "memory", "memoria");
1441
+ if (!memory || valoresDeclarativos(memory).length === 0) {
1442
+ diagnosticos.push(criarDiagnostico("SEM131", `Agent "${nome}" deveria declarar memory/memoria para evitar contexto improvisado.`, "aviso", agent.intervalo, "Declare quais memorias, docs ou contratos o agente deve consultar antes de agir."));
1443
+ }
1444
+ }
1192
1445
  export function criarContextoLocal(modulo) {
1193
1446
  const simbolos = new Map();
1194
1447
  const tiposConhecidos = new Set(TIPOS_PRIMITIVOS);
1195
1448
  const tasksConhecidas = new Set();
1449
+ const agentsConhecidos = new Set();
1196
1450
  const tarefasDetalhadas = new Map();
1197
1451
  const statesConhecidos = new Map();
1198
1452
  const enumsConhecidos = new Map();
@@ -1205,6 +1459,10 @@ export function criarContextoLocal(modulo) {
1205
1459
  tasksConhecidas.add(nome);
1206
1460
  return;
1207
1461
  }
1462
+ if (categoria === "agent") {
1463
+ agentsConhecidos.add(nome);
1464
+ return;
1465
+ }
1208
1466
  if (categoria !== "database") {
1209
1467
  tiposConhecidos.add(nome);
1210
1468
  }
@@ -1229,6 +1487,16 @@ export function criarContextoLocal(modulo) {
1229
1487
  for (const route of modulo.routes) {
1230
1488
  registrar(route.nome, "route");
1231
1489
  }
1490
+ for (const authorBlock of modulo.authorBlocks) {
1491
+ if (authorBlock.nome && TIPOS_AUTHOR_PROFILE.has(authorBlock.palavraChave)) {
1492
+ registrar(authorBlock.nome, authorBlock.palavraChave);
1493
+ }
1494
+ }
1495
+ for (const agent of modulo.agents) {
1496
+ if (agent.nome) {
1497
+ registrar(agent.nome, "agent");
1498
+ }
1499
+ }
1232
1500
  for (const worker of modulo.workers) {
1233
1501
  if (worker.nome) {
1234
1502
  registrar(worker.nome, "worker");
@@ -1289,6 +1557,7 @@ export function criarContextoLocal(modulo) {
1289
1557
  simbolos,
1290
1558
  tiposConhecidos,
1291
1559
  tasksConhecidas,
1560
+ agentsConhecidos,
1292
1561
  tarefasDetalhadas,
1293
1562
  statesConhecidos,
1294
1563
  modulosImportados: [],
@@ -1382,6 +1651,7 @@ export function analisarSemantica(modulo, opcoes = {}) {
1382
1651
  const simbolos = new Map();
1383
1652
  const tiposConhecidos = new Set(TIPOS_PRIMITIVOS);
1384
1653
  const tasksConhecidas = new Set();
1654
+ const agentsConhecidos = new Set();
1385
1655
  const tarefasDetalhadas = new Map();
1386
1656
  const statesConhecidos = new Map();
1387
1657
  const modulosImportados = [];
@@ -1417,6 +1687,9 @@ export function analisarSemantica(modulo, opcoes = {}) {
1417
1687
  for (const task of contextoImportado.tasksConhecidas) {
1418
1688
  tasksConhecidas.add(task);
1419
1689
  }
1690
+ for (const agent of contextoImportado.agentsConhecidos) {
1691
+ agentsConhecidos.add(agent);
1692
+ }
1420
1693
  for (const [nomeTask, detalhesTask] of contextoImportado.tarefasDetalhadas) {
1421
1694
  tarefasDetalhadas.set(nomeTask, {
1422
1695
  input: detalhesTask.input.map((campo) => ({ ...campo, modificadores: [...campo.modificadores] })),
@@ -1446,6 +1719,10 @@ export function analisarSemantica(modulo, opcoes = {}) {
1446
1719
  tasksConhecidas.add(nome);
1447
1720
  return;
1448
1721
  }
1722
+ if (categoria === "agent") {
1723
+ agentsConhecidos.add(nome);
1724
+ return;
1725
+ }
1449
1726
  if (categoria !== "database") {
1450
1727
  tiposConhecidos.add(nome);
1451
1728
  }
@@ -1470,6 +1747,16 @@ export function analisarSemantica(modulo, opcoes = {}) {
1470
1747
  for (const route of modulo.routes) {
1471
1748
  registrar(route.nome, "route", route.intervalo);
1472
1749
  }
1750
+ for (const authorBlock of modulo.authorBlocks) {
1751
+ if (authorBlock.nome && TIPOS_AUTHOR_PROFILE.has(authorBlock.palavraChave)) {
1752
+ registrar(authorBlock.nome, authorBlock.palavraChave, authorBlock.intervalo);
1753
+ }
1754
+ }
1755
+ for (const agent of modulo.agents) {
1756
+ if (agent.nome) {
1757
+ registrar(agent.nome, "agent", agent.intervalo);
1758
+ }
1759
+ }
1473
1760
  for (const worker of modulo.workers) {
1474
1761
  if (worker.nome) {
1475
1762
  registrar(worker.nome, "worker", worker.intervalo);
@@ -1547,7 +1834,7 @@ export function analisarSemantica(modulo, opcoes = {}) {
1547
1834
  validarTask(task, tiposConhecidos, statesConhecidos, diagnosticos);
1548
1835
  }
1549
1836
  for (const flow of modulo.flows) {
1550
- validarFlow(flow, tasksConhecidas, tarefasDetalhadas, diagnosticos);
1837
+ validarFlow(flow, tasksConhecidas, agentsConhecidos, tarefasDetalhadas, diagnosticos);
1551
1838
  }
1552
1839
  for (const route of modulo.routes) {
1553
1840
  validarRoute(route, tasksConhecidas, tarefasDetalhadas, diagnosticos);
@@ -1577,6 +1864,13 @@ export function analisarSemantica(modulo, opcoes = {}) {
1577
1864
  for (const policy of modulo.policies) {
1578
1865
  validarSuperficie(policy, "policy", tasksConhecidas, tiposConhecidos, diagnosticos);
1579
1866
  }
1867
+ for (const authorBlock of modulo.authorBlocks) {
1868
+ validarAuthorBlock(authorBlock, diagnosticos);
1869
+ }
1870
+ for (const agent of modulo.agents) {
1871
+ validarAgent(agent, diagnosticos);
1872
+ }
1873
+ validarAuthorSensivel(modulo, agentsConhecidos, diagnosticos);
1580
1874
  for (const database of modulo.databases) {
1581
1875
  validarDatabase(database, diagnosticos);
1582
1876
  }
@@ -1605,6 +1899,7 @@ export function analisarSemantica(modulo, opcoes = {}) {
1605
1899
  simbolos,
1606
1900
  tiposConhecidos,
1607
1901
  tasksConhecidas,
1902
+ agentsConhecidos,
1608
1903
  tarefasDetalhadas,
1609
1904
  statesConhecidos,
1610
1905
  modulosImportados,