@semacode/cli 1.5.54 → 1.5.55

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/README.md CHANGED
@@ -47,6 +47,7 @@ sema iniciar --template base
47
47
  ```bash
48
48
  sema compilar contratos/app.sema --alvo typescript --saida .tmp/app-ts --estrutura modulos
49
49
  sema compilar contratos/app.sema --alvo python --saida .tmp/app-py --estrutura modulos
50
+ sema compilar contratos/app.sema --alvo php --saida .tmp/app-php --estrutura modulos
50
51
  ```
51
52
 
52
53
  Generated artifacts include `SEMA-GOVERNED` headers and must stay aligned with
@@ -493,7 +493,7 @@ The CLI supports JavaScript generation:
493
493
  sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
494
494
  \`\`\`
495
495
 
496
- The project can also generate TypeScript, Python, Dart, Lua, HTML, and CSS when those targets are enabled in \`sema.config.json\`.
496
+ The project can also generate TypeScript, Python, PHP, Dart, Lua, HTML, and CSS when those targets are enabled in \`sema.config.json\`.
497
497
 
498
498
  ## Support Files
499
499
 
@@ -547,7 +547,7 @@ If the delivery includes code derived from a contract, run \`sema compilar\`.
547
547
  sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
548
548
  \`\`\`
549
549
 
550
- Replace \`javascript\` with \`typescript\`, \`python\`, \`dart\`, \`lua\`, \`html\`, or \`css\` when appropriate.
550
+ Replace \`javascript\` with \`typescript\`, \`python\`, \`php\`, \`dart\`, \`lua\`, \`html\`, or \`css\` when appropriate.
551
551
 
552
552
  ## Fail Closed
553
553
 
@@ -592,7 +592,7 @@ Honest closure: treat drift JSON as the source of truth. \`sucesso:false\`, \`vi
592
592
 
593
593
  ## Sema Code
594
594
 
595
- - \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>\`: generates starter/support artifacts from the contract.
595
+ - \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>\`: generates starter/support artifacts from the contract.
596
596
  - \`sema testar <arquivo.sema> --alvo <alvo> --saida <diretorio-temporario>\`: generates and runs local tests when the target supports it.
597
597
  - \`sema importar <fonte> <diretorio> --saida <diretorio> --json\`: imports a legacy project into initial contracts.
598
598
  - \`sema renomear-semantico <arquivo-ou-pasta> --de <nome> --para <nome> --json\`: helps rename symbols semantically.
@@ -13,6 +13,7 @@ import { gerarTypeScript } from "@sema/gerador-typescript";
13
13
  import { gerarJavaScript } from "@sema/gerador-javascript";
14
14
  import { gerarHtml } from "@sema/gerador-html";
15
15
  import { gerarCss } from "@sema/gerador-css";
16
+ import { gerarPhp } from "@sema/gerador-php";
16
17
  import { comandoDisponivel, resolverExecucaoPytest, TSX_EXECUTOR_CLI } from "./execucoesExternas.js";
17
18
  import { resolverEstruturaSaidaPadrao, resolverFrameworkPadrao, } from "./projeto.js";
18
19
  export function validarCompatibilidadeFramework(alvo, framework) {
@@ -25,7 +26,7 @@ export function validarCompatibilidadeFramework(alvo, framework) {
25
26
  if (framework === "fastapi" && alvo !== "python") {
26
27
  return `Framework "${framework}" so pode ser usado com o alvo python.`;
27
28
  }
28
- if (alvo === "dart" || alvo === "lua" || alvo === "javascript" || alvo === "html" || alvo === "css") {
29
+ if (alvo === "dart" || alvo === "lua" || alvo === "javascript" || alvo === "html" || alvo === "css" || alvo === "php") {
29
30
  return `Framework "${framework}" nao e suportado para o alvo ${alvo}.`;
30
31
  }
31
32
  return undefined;
@@ -147,6 +148,9 @@ export function gerarArquivosPorAlvo(ir, alvo, framework) {
147
148
  if (alvo === "css") {
148
149
  return gerarCss(ir);
149
150
  }
151
+ if (alvo === "php") {
152
+ return gerarPhp(ir);
153
+ }
150
154
  return gerarTypeScript(ir, { framework });
151
155
  }
152
156
  export function aplicarEstruturaSaida(arquivos, ir, estrutura) {
@@ -198,6 +202,13 @@ export function aplicarEstruturaSaida(arquivos, ir, estrutura) {
198
202
  else if (basename === `${nomeBaseAntigo}.css`) {
199
203
  novoBasename = `${nomeArquivo}.css`;
200
204
  }
205
+ else if (basename === `${nomeBaseAntigo}.php`) {
206
+ novoBasename = `${nomeArquivo}.php`;
207
+ }
208
+ else if (basename === `test_${nomeBaseAntigo}.php`) {
209
+ novoBasename = `test_${nomeArquivo}.php`;
210
+ conteudo = conteudo.replace(`/${nomeBaseAntigo}.php`, `/${nomeArquivo}.php`);
211
+ }
201
212
  return {
202
213
  caminhoRelativo: pastaModulo ? path.join(pastaModulo, novoBasename) : novoBasename,
203
214
  conteudo,
@@ -208,6 +219,13 @@ export function contarCasosDeTesteGerados(alvo, arquivos) {
208
219
  if (alvo === "dart" || alvo === "html" || alvo === "css") {
209
220
  return 0;
210
221
  }
222
+ if (alvo === "php") {
223
+ const arquivoTeste = arquivos.find((item) => path.basename(item.caminhoRelativo).startsWith("test_") && item.caminhoRelativo.endsWith(".php"));
224
+ if (!arquivoTeste) {
225
+ return 0;
226
+ }
227
+ return (arquivoTeste.conteudo.match(/\bfunction test_/g) ?? []).length;
228
+ }
211
229
  if (alvo === "lua") {
212
230
  const arquivoTeste = arquivos.find((item) => path.basename(item.caminhoRelativo).startsWith("test_") && item.caminhoRelativo.endsWith(".lua"));
213
231
  if (!arquivoTeste) {
@@ -239,7 +257,7 @@ export function executarTestesGerados(alvo, baseSaida, arquivos, silencioso = fa
239
257
  const quantidadeTestes = contarCasosDeTesteGerados(alvo, arquivos);
240
258
  if (quantidadeTestes === 0) {
241
259
  if (!silencioso) {
242
- const nomesAlvo = { typescript: "TypeScript", python: "Python", lua: "Lua", dart: "Dart", javascript: "JavaScript", html: "HTML", css: "CSS" };
260
+ const nomesAlvo = { typescript: "TypeScript", python: "Python", lua: "Lua", dart: "Dart", javascript: "JavaScript", html: "HTML", css: "CSS", php: "PHP" };
243
261
  console.log(`Nenhum teste ${nomesAlvo[alvo] ?? alvo} foi gerado.`);
244
262
  }
245
263
  return { codigoSaida: 0, quantidadeTestes, saidaPadrao: "", saidaErro: "" };
@@ -323,6 +341,35 @@ export function executarTestesGerados(alvo, baseSaida, arquivos, silencioso = fa
323
341
  saidaErro: typeof execucao.stderr === "string" ? execucao.stderr : "",
324
342
  };
325
343
  }
344
+ if (alvo === "php") {
345
+ const arquivoTeste = arquivos.find((item) => path.basename(item.caminhoRelativo).startsWith("test_") && item.caminhoRelativo.endsWith(".php"))?.caminhoRelativo;
346
+ if (!arquivoTeste) {
347
+ if (!silencioso) {
348
+ console.log("Nenhum teste PHP foi gerado.");
349
+ }
350
+ return { codigoSaida: 0, quantidadeTestes, saidaPadrao: "", saidaErro: "" };
351
+ }
352
+ if (!comandoDisponivel("php", ["-v"])) {
353
+ return {
354
+ codigoSaida: 1,
355
+ quantidadeTestes,
356
+ saidaPadrao: "",
357
+ saidaErro: "Nao foi possivel localizar o runner php para executar os testes gerados.",
358
+ };
359
+ }
360
+ const execucao = spawnSync("php", [arquivoTeste], {
361
+ stdio: silencioso ? "pipe" : "inherit",
362
+ cwd: baseSaida,
363
+ encoding: silencioso ? "utf8" : undefined,
364
+ shell: process.platform === "win32",
365
+ });
366
+ return {
367
+ codigoSaida: execucao.status ?? 1,
368
+ quantidadeTestes,
369
+ saidaPadrao: typeof execucao.stdout === "string" ? execucao.stdout : "",
370
+ saidaErro: typeof execucao.stderr === "string" ? execucao.stderr : "",
371
+ };
372
+ }
326
373
  const arquivoTeste = arquivos.find((item) => path.basename(item.caminhoRelativo).startsWith("test_"))?.caminhoRelativo;
327
374
  if (!arquivoTeste) {
328
375
  if (!silencioso) {
@@ -1,4 +1,4 @@
1
- export declare const STARTER_IA = "Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo em backend e front consumer.\n\nImportante:\n- a Sema se apresenta publicamente como protocolo e funciona tecnicamente como linguagem de intencao\n- a Sema e protocolo de governanca semantica desenhado para IA, nao para ergonomia humana\n- humanos sao autores/aprovadores; agentes sao os consumidores primarios do contrato\n- leitura humana e bonus toleravel, nao objetivo de produto\n- a Sema nao e gerador magico que deveria fazer tudo\n- a Sema modela contratos, estados, fluxos, erros, efeitos, garantias, vinculos e execucao\n- a Sema gera codigo e scaffolding real para TypeScript, Python, Dart, Lua, JavaScript, HTML e CSS\n- a Sema usa `importar` para bootstrap revisavel, nao para contrato final automatico\n- a Sema usa `impl` para ligar task a simbolo real do runtime\n- a Sema usa `vinculos` para ligar contrato a arquivo, simbolo, recurso e superficie real\n- a Sema usa `execucao` para explicitar timeout, retry, compensacao e criticidade\n- a Sema usa `drift` para medir diferenca entre contrato e codigo vivo com score, confianca e lacunas\n- a Sema usa `resumo` e `prompt-curto` para IA fraca, gratuita ou com pouco contexto\n- a Sema usa `contexto-ia` para gerar `ast.json`, `ir.json`, `drift.json`, `briefing.json` e artefatos compactos antes da edicao\n- timeout definido pelo agente nao e falha do Sema; aumente o timeout e tente de novo antes de concluir falha\n- a Sema pode servir de base para interfaces graficas elegantes e coerentes\n- a Sema gera artefatos HTML/CSS derivados, mas nao substitui sozinha uma interface completa de produto\n- trate a Sema como cerebro semantico da aplicacao, nao como gerador magico de front-end pronto\n- se a tarefa envolver UI, prefira pedir Sema + React + TypeScript ou Sema + arquitetura de front-end\n- evite pedir HTML unico solto quando a intencao for testar a Sema de verdade\n\nRegras:\n- nao invente sintaxe fora da gramatica e dos exemplos oficiais\n- antes de qualquer acao, crie, edite ou remova o contrato .sema aplicavel; isso vale para Software, Author, Workflow, Ops, Game, Legal e Research\n- se a IA for fraca, nao tente abrir tudo de uma vez\n- use `sema resumo` e `briefing.min.json` antes de subir para o pacote completo\n- se `sema resumo . --micro` estourar timeout local, repita com timeout maior ou escopo menor; nao avance com codigo\n- trate `ir --json` como fonte de verdade semantica\n- trate `briefing.json` como plano de intervencao antes de editar projeto vivo\n- trate `diagnosticos --json` como fonte de correcao\n- use `sema formatar` como fonte unica de estilo\n- preserve a intencao do contrato\n- nao cobre da Sema adivinhacao de negocio que nao esta no contrato nem no codigo\n\nComandos essenciais:\n- resumo compacto por capacidade: `sema resumo <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`\n- prompt curto para IA fraca: `sema prompt-curto <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`\n- descoberta do projeto: `sema inspecionar [arquivo-ou-pasta] --json`\n- auditoria do contrato vivo: `sema drift <arquivo-ou-pasta> [--escopo <arquivo|modulo|projeto>] [--json]`\n- mapa de impacto: `sema impacto <arquivo-ou-pasta> --alvo <token> [--mudanca <descricao>] [--json]`\n- renomeacao assistida: `sema renomear-semantico <arquivo-ou-pasta> --de <nome-atual> --para <nome-novo> [--json]`\n- contexto completo do modulo: `sema contexto-ia <arquivo.sema>`\n- estrutura sintatica: `sema ast <arquivo.sema> --json`\n- estrutura semantica: `sema ir <arquivo.sema> --json`\n- validacao: `sema validar <arquivo.sema> --json`\n- diagnosticos: `sema diagnosticos <arquivo.sema> --json`\n- formatacao: `sema formatar <arquivo.sema>`\n- importacao assistida de legado: `sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|dotnet|java|go|rust|cpp|php|typescript|python|dart> <diretorio> --saida <diretorio>`\n- exemplos oficiais no projeto: `sema instalar-exemplos`\n- geracao de codigo: `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>`\n- verificacao final: `sema verificar <arquivo-ou-pasta> [--json]`\n\nAntes de editar:\n1. leia README, docs de IA e um exemplo oficial parecido\n2. se a IA for fraca, rode `sema resumo <arquivo> --micro` e leia `briefing.min.json`\n - se timeout local estourar, aumente o timeout e tente de novo; timeout nao significa Sema inativo\n3. se a IA aguentar mais, rode `sema drift` para medir impls, vinculos, rotas, score e lacunas\n4. se a tarefa for pesada, rode `sema contexto-ia` e leia `briefing.json`\n5. consulte AST e IR do modulo alvo so quando a capacidade realmente aguentar\n\nDepois de editar:\n1. rode `sema formatar`\n2. rode `sema validar --json`\n3. se houver falha, use `diagnosticos --json`\n4. rode `sema drift` de novo quando mexer em codigo vivo\n5. se a tarefa pedir codigo derivado, rode `sema compilar`\n6. feche com `sema verificar <arquivo-ou-pasta> --json`\n\nPriorize sempre:\n- exemplos oficiais\n- JSON da CLI\n- o menor artefato que resolva a tarefa da IA atual\n- score, confianca e lacunas do `drift`\n- `briefing.json` como guia de mudanca\n- consistencia semantica\n\nSuperficies que a IA deve enxergar como first-class:\n- `route`\n- `worker`\n- `evento`\n- `fila`\n- `cron`\n- `webhook`\n- `cache`\n- `storage`\n- `policy`\n\nNao improvise quando faltar contexto.\n";
1
+ export declare const STARTER_IA = "Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo em backend e front consumer.\n\nImportante:\n- a Sema se apresenta publicamente como protocolo e funciona tecnicamente como linguagem de intencao\n- a Sema e protocolo de governanca semantica desenhado para IA, nao para ergonomia humana\n- humanos sao autores/aprovadores; agentes sao os consumidores primarios do contrato\n- leitura humana e bonus toleravel, nao objetivo de produto\n- a Sema nao e gerador magico que deveria fazer tudo\n- a Sema modela contratos, estados, fluxos, erros, efeitos, garantias, vinculos e execucao\n- a Sema gera codigo e scaffolding real para TypeScript, Python, PHP, Dart, Lua, JavaScript, HTML e CSS\n- a Sema usa `importar` para bootstrap revisavel, nao para contrato final automatico\n- a Sema usa `impl` para ligar task a simbolo real do runtime\n- a Sema usa `vinculos` para ligar contrato a arquivo, simbolo, recurso e superficie real\n- a Sema usa `execucao` para explicitar timeout, retry, compensacao e criticidade\n- a Sema usa `drift` para medir diferenca entre contrato e codigo vivo com score, confianca e lacunas\n- a Sema usa `resumo` e `prompt-curto` para IA fraca, gratuita ou com pouco contexto\n- a Sema usa `contexto-ia` para gerar `ast.json`, `ir.json`, `drift.json`, `briefing.json` e artefatos compactos antes da edicao\n- timeout definido pelo agente nao e falha do Sema; aumente o timeout e tente de novo antes de concluir falha\n- a Sema pode servir de base para interfaces graficas elegantes e coerentes\n- a Sema gera artefatos HTML/CSS derivados, mas nao substitui sozinha uma interface completa de produto\n- trate a Sema como cerebro semantico da aplicacao, nao como gerador magico de front-end pronto\n- se a tarefa envolver UI, prefira pedir Sema + React + TypeScript ou Sema + arquitetura de front-end\n- evite pedir HTML unico solto quando a intencao for testar a Sema de verdade\n\nRegras:\n- nao invente sintaxe fora da gramatica e dos exemplos oficiais\n- antes de qualquer acao, crie, edite ou remova o contrato .sema aplicavel; isso vale para Software, Author, Workflow, Ops, Game, Legal e Research\n- se a IA for fraca, nao tente abrir tudo de uma vez\n- use `sema resumo` e `briefing.min.json` antes de subir para o pacote completo\n- se `sema resumo . --micro` estourar timeout local, repita com timeout maior ou escopo menor; nao avance com codigo\n- trate `ir --json` como fonte de verdade semantica\n- trate `briefing.json` como plano de intervencao antes de editar projeto vivo\n- trate `diagnosticos --json` como fonte de correcao\n- use `sema formatar` como fonte unica de estilo\n- preserve a intencao do contrato\n- nao cobre da Sema adivinhacao de negocio que nao esta no contrato nem no codigo\n\nComandos essenciais:\n- resumo compacto por capacidade: `sema resumo <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`\n- prompt curto para IA fraca: `sema prompt-curto <arquivo-ou-pasta> [--micro|--curto|--medio] [--para <resumo|onboarding|review|mudanca|bug|arquitetura>]`\n- descoberta do projeto: `sema inspecionar [arquivo-ou-pasta] --json`\n- auditoria do contrato vivo: `sema drift <arquivo-ou-pasta> [--escopo <arquivo|modulo|projeto>] [--json]`\n- mapa de impacto: `sema impacto <arquivo-ou-pasta> --alvo <token> [--mudanca <descricao>] [--json]`\n- renomeacao assistida: `sema renomear-semantico <arquivo-ou-pasta> --de <nome-atual> --para <nome-novo> [--json]`\n- contexto completo do modulo: `sema contexto-ia <arquivo.sema>`\n- estrutura sintatica: `sema ast <arquivo.sema> --json`\n- estrutura semantica: `sema ir <arquivo.sema> --json`\n- validacao: `sema validar <arquivo.sema> --json`\n- diagnosticos: `sema diagnosticos <arquivo.sema> --json`\n- formatacao: `sema formatar <arquivo.sema>`\n- importacao assistida de legado: `sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|dotnet|java|go|rust|cpp|php|typescript|python|dart> <diretorio> --saida <diretorio>`\n- exemplos oficiais no projeto: `sema instalar-exemplos`\n- geracao de codigo: `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>`\n- verificacao final: `sema verificar <arquivo-ou-pasta> [--json]`\n\nAntes de editar:\n1. leia README, docs de IA e um exemplo oficial parecido\n2. se a IA for fraca, rode `sema resumo <arquivo> --micro` e leia `briefing.min.json`\n - se timeout local estourar, aumente o timeout e tente de novo; timeout nao significa Sema inativo\n3. se a IA aguentar mais, rode `sema drift` para medir impls, vinculos, rotas, score e lacunas\n4. se a tarefa for pesada, rode `sema contexto-ia` e leia `briefing.json`\n5. consulte AST e IR do modulo alvo so quando a capacidade realmente aguentar\n\nDepois de editar:\n1. rode `sema formatar`\n2. rode `sema validar --json`\n3. se houver falha, use `diagnosticos --json`\n4. rode `sema drift` de novo quando mexer em codigo vivo\n5. se a tarefa pedir codigo derivado, rode `sema compilar`\n6. feche com `sema verificar <arquivo-ou-pasta> --json`\n\nPriorize sempre:\n- exemplos oficiais\n- JSON da CLI\n- o menor artefato que resolva a tarefa da IA atual\n- score, confianca e lacunas do `drift`\n- `briefing.json` como guia de mudanca\n- consistencia semantica\n\nSuperficies que a IA deve enxergar como first-class:\n- `route`\n- `worker`\n- `evento`\n- `fila`\n- `cron`\n- `webhook`\n- `cache`\n- `storage`\n- `policy`\n\nNao improvise quando faltar contexto.\n";
2
2
  export declare const PROMPT_BASE_IA = "Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo.\n\nTrate a Sema como protocolo de governanca semantica e linguagem de intencao feita para IA, nao para leitura humana confortavel. Humanos escrevem e aprovam; agentes consomem. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.\n\nFontes de verdade, em ordem:\n1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele\n2. `AGENT_CONTEXT_PACK.json`\n3. `SEMA_BRIEF.md`\n4. `SEMA_INDEX.json`\n5. `AGENTS.md`\n6. README do projeto\n7. gramatica e documentacao de sintaxe da Sema\n8. exemplos oficiais, com prioridade para o vertical de pagamento\n9. `sema resumo` e `briefing.min.json` quando a IA for fraca\n10. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar\n\nRegras de operacao:\n- contrato vem antes da acao: crie, edite ou remova o .sema aplicavel antes de codigo, docs operacionais, texto Author, workflow, jogo, pesquisa, legal ou ops\n- preserve o significado semantico\n- use o formatador oficial da Sema como fonte unica de estilo\n- use diagnosticos estruturados como contrato de correcao\n- use a IR como fonte de verdade semantica quando houver duvida\n- use predicados canonicos como normalizacao opcional, preservando a forma original\n- nao conclua uma alteracao sem validar e verificar o modulo\n- comece pelo menor artefato semantico que resolva a tarefa\n\nAntes de editar `.sema`, entenda:\n- o module alvo\n- os contratos de task, route, error, effects, guarantees, state e flow\n- os exemplos oficiais relacionados\n\nDepois de editar `.sema`, execute este fluxo:\n1. formatar\n2. validar\n3. diagnosticar, se houver falha\n4. verificar\n\nSe houver conflito entre texto livre e IR/diagnosticos, priorize a IR e os diagnosticos da CLI.\n\nSe algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao improvise sem base.\n";
3
3
  export declare const PROMPT_IA_UI = "Atue como Engenheiro de Software Senior e UX/UI Designer de elite.\n\nQuero que voce trabalhe com Sema como fonte de verdade semantica do sistema e com React + TypeScript como camada de interface.\n\nEntregue obrigatoriamente duas partes integradas:\n1. os arquivos `.sema` do dominio\n2. a proposta ou implementacao da interface em React + TypeScript\n\nRegras:\n- nao entregue apenas HTML solto em arquivo unico\n- nao trate a Sema como enfeite conceitual\n- a interface deve nascer do contrato semantico definido em Sema\n- use os exemplos oficiais da Sema como referencia de estilo e semantica\n- nao invente sintaxe fora da gramatica suportada\n\nA Sema deve modelar, quando fizer sentido:\n- `module`\n- `use`\n- `entity`\n- `enum`\n- `state`\n- `task`\n- `flow`\n- `route`\n- `effects`\n- `error`\n- `guarantees`\n- `tests`\n- `docs`\n\nA interface deve refletir visualmente:\n- `state` como status e progresso observavel\n- `flow` como etapas ou orquestracao visivel\n- `error` como falhas tratadas com clareza\n- `effects` como operacoes relevantes para usuario ou operacao\n- `guarantees` como confianca, confirmacao ou consistencia final\n\nEstruture a entrega assim:\n1. visao do produto\n2. dominio modelado em Sema\n3. arquitetura de pastas em React + TypeScript\n4. componentes principais\n5. estrategia visual\n6. codigo principal da interface\n7. explicacao curta de como a UI conversa com a semantica da Sema\n\nSe a tarefa envolver app visual, a Sema governa o significado e o React renderiza a experiencia. Nao atropele essa separacao.\n";
4
4
  export declare const PROMPT_IA_REACT = "Crie uma solucao com Sema + React + TypeScript.\n\nRegras principais:\n- a Sema deve ser a fonte de verdade semantica do dominio\n- React + TypeScript deve ser a camada de interface e experiencia\n- nao entregue HTML unico solto\n- nao trate a Sema como enfeite\n\nEntregue obrigatoriamente:\n1. arquivos `.sema` do dominio\n2. arquitetura de pastas do frontend\n3. componentes React principais\n4. contratos e tipos derivados da semantica\n5. interface elegante e implementavel\n\nA modelagem Sema deve cobrir, quando fizer sentido:\n- `entity`\n- `enum`\n- `state`\n- `task`\n- `flow`\n- `route`\n- `effects`\n- `error`\n- `guarantees`\n- `tests`\n\nA interface React deve tornar visiveis:\n- estado atual e transicoes relevantes\n- fluxo operacional\n- erros publicos\n- efeitos operacionais importantes\n- garantias ou confirmacoes finais\n\nEstruture a entrega assim:\n1. visao do produto\n2. arquivos `.sema`\n3. arquitetura React + TypeScript\n4. componentes e telas\n5. codigo principal\n6. explicacao de como a UI deriva da semantica da Sema\n\nSe houver duvida, siga os exemplos oficiais e mantenha a separacao:\n- Sema governa o significado\n- React governa a apresentacao\n";
package/dist/iaPrompts.js CHANGED
@@ -11,7 +11,7 @@ Importante:
11
11
  - leitura humana e bonus toleravel, nao objetivo de produto
12
12
  - a Sema nao e gerador magico que deveria fazer tudo
13
13
  - a Sema modela contratos, estados, fluxos, erros, efeitos, garantias, vinculos e execucao
14
- - a Sema gera codigo e scaffolding real para TypeScript, Python, Dart, Lua, JavaScript, HTML e CSS
14
+ - a Sema gera codigo e scaffolding real para TypeScript, Python, PHP, Dart, Lua, JavaScript, HTML e CSS
15
15
  - a Sema usa \`importar\` para bootstrap revisavel, nao para contrato final automatico
16
16
  - a Sema usa \`impl\` para ligar task a simbolo real do runtime
17
17
  - a Sema usa \`vinculos\` para ligar contrato a arquivo, simbolo, recurso e superficie real
@@ -54,7 +54,7 @@ Comandos essenciais:
54
54
  - formatacao: \`sema formatar <arquivo.sema>\`
55
55
  - importacao assistida de legado: \`sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|dotnet|java|go|rust|cpp|php|typescript|python|dart> <diretorio> --saida <diretorio>\`
56
56
  - exemplos oficiais no projeto: \`sema instalar-exemplos\`
57
- - geracao de codigo: \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>\`
57
+ - geracao de codigo: \`sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>\`
58
58
  - verificacao final: \`sema verificar <arquivo-ou-pasta> [--json]\`
59
59
 
60
60
  Antes de editar:
@@ -36,7 +36,7 @@ export function ajuda() {
36
36
  "[1] Projeto novo / produção inicial",
37
37
  "sema iniciar --template <base|nestjs|fastapi|nextjs-api|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer>",
38
38
  "sema validar contratos/<modulo>.sema --json",
39
- "sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>",
39
+ "sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>",
40
40
  "sema verificar <arquivo-ou-pasta> --json",
41
41
  "",
42
42
  "[2] Editar projeto que já usa Sema",
@@ -86,8 +86,8 @@ export function ajuda() {
86
86
  "importação: sema importar <nestjs|fastapi|flask|nextjs|nextjs-consumer|react-vite-consumer|angular-consumer|flutter-consumer|firebase|dotnet|java|go|rust|cpp|php|typescript|python|dart> <diretorio> [--saida <diretorio>] [--namespace <base>] [--json]",
87
87
  "validação: sema validar <arquivo-ou-pasta> [--json]",
88
88
  "diagnóstico: sema diagnosticos <arquivo.sema> [--json]",
89
- "geração: sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio> [--estrutura <flat|modulos|backend>] [--framework <base|nestjs|fastapi>]",
90
- "teste local: sema testar <arquivo.sema> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio-temporario> [--estrutura <flat|modulos|backend>] [--framework <base|nestjs|fastapi>]",
89
+ "geração: sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio> [--estrutura <flat|modulos|backend>] [--framework <base|nestjs|fastapi>]",
90
+ "teste local: sema testar <arquivo.sema> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio-temporario> [--estrutura <flat|modulos|backend>] [--framework <base|nestjs|fastapi>]",
91
91
  "verificação final: sema verificar <arquivo-ou-pasta> [--saida <diretorio-base>] [--json]",
92
92
  "formatação: sema formatar <arquivo-ou-pasta> [--check] [--json]",
93
93
  "author: sema author <iniciar|validar|briefing|revisar-cliches|validar-narrativa|validar-proibicoes> [arquivo] [--tema-sensivel] [--preset conto|romance|roteiro|lore|campanha] [--saida <arquivo>] [--texto <texto>] [--json]",
@@ -206,7 +206,7 @@ export async function comandoAjudaIa() {
206
206
  "Use `sema docs-impacto --intencao <acao>` para ler ou criar docs obrigatorias antes de agir.",
207
207
  "Use `sema finalizar-mudanca --intencao <acao>` para bloquear conclusao sem leitura documental comprovada.",
208
208
  "Use `sema contexto-ia <arquivo.sema>` para gerar AST, IR, drift, `briefing.json` e `briefing.min.json`.",
209
- "Use `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>` quando a tarefa pedir codigo derivado.",
209
+ "Use `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>` quando a tarefa pedir codigo derivado.",
210
210
  ]));
211
211
  console.log("");
212
212
  console.log(renderizarSecaoAscii("Regras praticas", [
@@ -118,7 +118,7 @@ export function arquivosTemplateIniciar(template) {
118
118
  ?? [
119
119
  {
120
120
  caminhoRelativo: "sema.config.json",
121
- conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\", \"python\", \"dart\", \"lua\", \"html\", \"css\"],\n \"alvoPadrao\": \"typescript\",\n \"estruturaSaida\": \"modulos\",\n \"framework\": \"base\",\n \"modoEstrito\": true,\n \"diretoriosSaidaPorAlvo\": {\n \"typescript\": \"./generated/typescript\",\n \"javascript\": \"./generated/javascript\",\n \"python\": \"./generated/python\",\n \"dart\": \"./generated/dart\",\n \"lua\": \"./generated/lua\",\n \"html\": \"./generated/html\",\n \"css\": \"./generated/css\"\n },\n \"convencoesGeracaoPorProjeto\": \"base\"\n}\n",
121
+ conteudo: "{\n \"origens\": [\"./contratos\"],\n \"saida\": \"./generated\",\n \"alvos\": [\"typescript\", \"javascript\", \"python\", \"php\", \"dart\", \"lua\", \"html\", \"css\"],\n \"alvoPadrao\": \"typescript\",\n \"estruturaSaida\": \"modulos\",\n \"framework\": \"base\",\n \"modoEstrito\": true,\n \"diretoriosSaidaPorAlvo\": {\n \"typescript\": \"./generated/typescript\",\n \"javascript\": \"./generated/javascript\",\n \"python\": \"./generated/python\",\n \"php\": \"./generated/php\",\n \"dart\": \"./generated/dart\",\n \"lua\": \"./generated/lua\",\n \"html\": \"./generated/html\",\n \"css\": \"./generated/css\"\n },\n \"convencoesGeracaoPorProjeto\": \"base\"\n}\n",
122
122
  },
123
123
  ...arquivosBase,
124
124
  ];
@@ -52,7 +52,7 @@ export function normalizarFrameworkGeracao(valor) {
52
52
  return "base";
53
53
  }
54
54
  export function normalizarAlvo(valor) {
55
- if (valor === "typescript" || valor === "python" || valor === "dart" || valor === "lua" || valor === "javascript" || valor === "html" || valor === "css") {
55
+ if (valor === "typescript" || valor === "python" || valor === "dart" || valor === "lua" || valor === "javascript" || valor === "html" || valor === "css" || valor === "php") {
56
56
  return valor;
57
57
  }
58
58
  if (valor === "js") {
@@ -35,7 +35,7 @@ If the delivery includes code derived from a contract, run `sema compilar`.
35
35
  sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
36
36
  ```
37
37
 
38
- Replace `javascript` with `typescript`, `python`, `dart`, `lua`, `html`, or `css` when appropriate.
38
+ Replace `javascript` with `typescript`, `python`, `php`, `dart`, `lua`, `html`, or `css` when appropriate.
39
39
 
40
40
  ## Fail Closed
41
41
 
package/docs/commands.md CHANGED
@@ -36,7 +36,7 @@ Honest closure: treat drift JSON as the source of truth. `sucesso:false`, `vincu
36
36
 
37
37
  ## Sema Code
38
38
 
39
- - `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|dart|lua|javascript|html|css> --saida <diretorio>`: generates starter/support artifacts from the contract.
39
+ - `sema compilar <arquivo-ou-pasta> --alvo <typescript|python|php|dart|lua|javascript|html|css> --saida <diretorio>`: generates starter/support artifacts from the contract.
40
40
  - `sema testar <arquivo.sema> --alvo <alvo> --saida <diretorio-temporario>`: generates and runs local tests when the target supports it.
41
41
  - `sema importar <fonte> <diretorio> --saida <diretorio> --json`: imports a legacy project into initial contracts.
42
42
  - `sema renomear-semantico <arquivo-ou-pasta> --de <nome> --para <nome> --json`: helps rename symbols semantically.
package/docs/syntax.md CHANGED
@@ -105,13 +105,13 @@ impl {
105
105
 
106
106
  ## JavaScript Is Supported
107
107
 
108
- The CLI supports JavaScript generation:
108
+ The CLI supports JavaScript and PHP generation:
109
109
 
110
110
  ```bash
111
111
  sema compilar contratos/orders.sema --alvo javascript --saida ./generated/javascript
112
112
  ```
113
113
 
114
- The project can also generate TypeScript, Python, Dart, Lua, HTML, and CSS when those targets are enabled in `sema.config.json`.
114
+ The project can also generate TypeScript, Python, PHP, Dart, Lua, HTML, and CSS when those targets are enabled in `sema.config.json`.
115
115
 
116
116
  ## Support Files
117
117
 
@@ -0,0 +1,3 @@
1
+ import type { IrModulo } from "@sema/nucleo";
2
+ import { type ArquivoGerado } from "@sema/padroes";
3
+ export declare function gerarPhp(modulo: IrModulo): ArquivoGerado[];
@@ -0,0 +1,538 @@
1
+ // SEMA-GOVERNED: sema.geradores_codigo_governado
2
+ // Descricao: gerador PHP governado; consulte contratos/sema/geradores_codigo_governado.sema antes de editar.
3
+ import path from "node:path";
4
+ import { descreverEstruturaModulo, extrairTiposNomeados, mapearTipoParaPhp, normalizarNomeModulo, normalizarNomeParaSimbolo, } from "@sema/padroes";
5
+ const TIPOS_PRIMITIVOS_SEMA = new Set(["Texto", "Numero", "Inteiro", "Decimal", "Booleano", "Data", "DataHora", "Id", "Email", "Url", "Json", "Vazio"]);
6
+ function paraPascalCase(valor) {
7
+ const normalizado = normalizarNomeParaSimbolo(valor);
8
+ const partes = normalizado.split(/_+/).filter(Boolean);
9
+ const nome = partes.map((parte) => parte[0].toUpperCase() + parte.slice(1)).join("");
10
+ return nome || "Contrato";
11
+ }
12
+ function paraConstantePhp(valor) {
13
+ const simbolo = normalizarNomeParaSimbolo(valor).toUpperCase();
14
+ return /^[A-Z_]/.test(simbolo) ? simbolo : `VALOR_${simbolo}`;
15
+ }
16
+ function literalPhp(valor) {
17
+ if (valor === null) {
18
+ return "null";
19
+ }
20
+ if (typeof valor === "boolean") {
21
+ return valor ? "true" : "false";
22
+ }
23
+ if (typeof valor === "number") {
24
+ return Number.isInteger(valor) ? String(valor) : String(valor);
25
+ }
26
+ return JSON.stringify(valor);
27
+ }
28
+ function tipoPropriedadePhp(campo) {
29
+ if (campo.cardinalidade === "lista" || campo.cardinalidade === "mapa") {
30
+ return "array";
31
+ }
32
+ if (campo.cardinalidade === "uniao") {
33
+ const tipos = [...new Set(campo.tiposAlternativos.map(mapearTipoParaPhp).filter((tipo) => tipo !== "void"))];
34
+ return tipos.length === 1 ? tipos[0] : "mixed";
35
+ }
36
+ return mapearTipoParaPhp(campo.tipoBase);
37
+ }
38
+ function tipoParametroPhp(campo) {
39
+ const tipo = tipoPropriedadePhp(campo);
40
+ if (tipo === "void") {
41
+ return "mixed";
42
+ }
43
+ if (campo.opcional && tipo !== "mixed" && !tipo.includes("|null")) {
44
+ return `?${tipo}`;
45
+ }
46
+ return tipo;
47
+ }
48
+ function tipoDocPhp(campo) {
49
+ if (campo.cardinalidade === "lista") {
50
+ return `array<int, ${mapearTipoParaPhp(campo.tipoItem ?? campo.tipoBase)}>`;
51
+ }
52
+ if (campo.cardinalidade === "mapa") {
53
+ return `array<${mapearTipoParaPhp(campo.chaveMapa ?? "Texto")}, ${mapearTipoParaPhp(campo.valorMapa ?? "Json")}>`;
54
+ }
55
+ if (campo.cardinalidade === "uniao") {
56
+ return campo.tiposAlternativos.map(mapearTipoParaPhp).join("|") || "mixed";
57
+ }
58
+ return mapearTipoParaPhp(campo.tipoBase);
59
+ }
60
+ function ordenarCamposConstrutor(campos) {
61
+ return [...campos].sort((a, b) => {
62
+ const obrigatorioA = a.modificadores.includes("required") ? 0 : 1;
63
+ const obrigatorioB = b.modificadores.includes("required") ? 0 : 1;
64
+ return obrigatorioA - obrigatorioB;
65
+ });
66
+ }
67
+ function valorPadraoPhp(campo) {
68
+ if (campo.cardinalidade === "lista" || campo.cardinalidade === "mapa") {
69
+ return "[]";
70
+ }
71
+ if (campo.opcional) {
72
+ return "null";
73
+ }
74
+ switch (campo.tipoBase) {
75
+ case "Texto":
76
+ case "Id":
77
+ case "Email":
78
+ case "Url":
79
+ case "Data":
80
+ case "DataHora":
81
+ return literalPhp(`${campo.nome}_exemplo`);
82
+ case "Numero":
83
+ case "Decimal":
84
+ return "1.0";
85
+ case "Inteiro":
86
+ return "1";
87
+ case "Booleano":
88
+ return "false";
89
+ case "Json":
90
+ return "[]";
91
+ case "Vazio":
92
+ return "null";
93
+ default:
94
+ return "[]";
95
+ }
96
+ }
97
+ function coletarTiposExternos(modulo) {
98
+ const locais = new Set([
99
+ ...modulo.types.map((item) => item.nome),
100
+ ...modulo.entities.map((item) => item.nome),
101
+ ...modulo.enums.map((item) => item.nome),
102
+ ]);
103
+ const referenciados = new Set();
104
+ const campos = [
105
+ ...modulo.entities.flatMap((entity) => entity.campos),
106
+ ...modulo.types.flatMap((tipo) => tipo.definicao.campos),
107
+ ...modulo.tasks.flatMap((task) => [...task.input, ...task.output]),
108
+ ...modulo.routes.flatMap((route) => [...route.inputPublico, ...route.outputPublico]),
109
+ ...modulo.states.flatMap((state) => state.campos),
110
+ ];
111
+ for (const campo of campos) {
112
+ for (const tipo of extrairTiposNomeados(campo.tipo)) {
113
+ if (!locais.has(tipo) && !TIPOS_PRIMITIVOS_SEMA.has(tipo)) {
114
+ referenciados.add(tipo);
115
+ }
116
+ }
117
+ }
118
+ return [...referenciados].sort((a, b) => a.localeCompare(b, "pt-BR"));
119
+ }
120
+ function gerarClasseDados(nome, campos) {
121
+ const classe = paraPascalCase(nome);
122
+ if (campos.length === 0) {
123
+ return `final class ${classe}
124
+ {
125
+ public function __construct()
126
+ {
127
+ }
128
+ }
129
+ `;
130
+ }
131
+ const parametros = ordenarCamposConstrutor(campos).map((campo) => {
132
+ const tipo = tipoParametroPhp(campo);
133
+ const padrao = campo.modificadores.includes("required") ? "" : ` = ${valorPadraoPhp(campo)}`;
134
+ return ` /** @var ${tipoDocPhp(campo)} */
135
+ public ${tipo} $${campo.nome}${padrao}`;
136
+ }).join(",\n");
137
+ return `final class ${classe}
138
+ {
139
+ public function __construct(
140
+ ${parametros}
141
+ ) {
142
+ }
143
+ }
144
+ `;
145
+ }
146
+ function gerarEnum(enumeracao) {
147
+ const constantes = enumeracao.valores.map((valor) => ` public const ${paraConstantePhp(valor)} = ${literalPhp(valor)};`).join("\n");
148
+ return `final class ${paraPascalCase(enumeracao.nome)}
149
+ {
150
+ ${constantes || " public const VAZIO = \"\";"}
151
+ }
152
+ `;
153
+ }
154
+ function gerarLiteralCamposPhp(campos) {
155
+ if (campos.length === 0) {
156
+ return "[]";
157
+ }
158
+ return `[
159
+ ${campos.map((campo) => ` ["nome" => ${literalPhp(campo.nome)}, "tipo" => ${literalPhp(campo.tipo)}, "obrigatorio" => ${campo.modificadores.includes("required") ? "true" : "false"}],`).join("\n")}
160
+ ]`;
161
+ }
162
+ function gerarArrayStringsPhp(valores) {
163
+ if (valores.length === 0) {
164
+ return "[]";
165
+ }
166
+ return `[${valores.map(literalPhp).join(", ")}]`;
167
+ }
168
+ function gerarMapaErrosPhp(erros) {
169
+ const entradas = Object.entries(erros);
170
+ if (entradas.length === 0) {
171
+ return "[]";
172
+ }
173
+ return `[
174
+ ${entradas.map(([codigo, mensagem]) => ` ${literalPhp(codigo)} => ${literalPhp(mensagem)},`).join("\n")}
175
+ ]`;
176
+ }
177
+ function resolverReferenciaPhp(referencia, variavel) {
178
+ const partes = referencia.split(".").filter(Boolean);
179
+ if (partes.length === 0) {
180
+ return `$${variavel}`;
181
+ }
182
+ if (partes.length === 1) {
183
+ return `$${variavel}->${partes[0]}`;
184
+ }
185
+ const [primeiro, ...resto] = partes;
186
+ return `$${variavel}->${primeiro}${resto.map((parte) => `?->${parte}`).join("")}`;
187
+ }
188
+ function formatarValorPhp(valor, camposConhecidos, variavel) {
189
+ const texto = valor.trim();
190
+ if (/^-?\d+(?:\.\d+)?$/.test(texto)) {
191
+ return texto;
192
+ }
193
+ if (texto === "verdadeiro") {
194
+ return "true";
195
+ }
196
+ if (texto === "falso") {
197
+ return "false";
198
+ }
199
+ if (texto === "nulo") {
200
+ return "null";
201
+ }
202
+ if (camposConhecidos.has(texto.split(".")[0] ?? texto)) {
203
+ return resolverReferenciaPhp(texto, variavel);
204
+ }
205
+ return literalPhp(texto);
206
+ }
207
+ function resolverExpressaoPhp(expressao, camposConhecidos, variavel) {
208
+ switch (expressao.tipo) {
209
+ case "existe":
210
+ return `${resolverReferenciaPhp(expressao.alvo, variavel)} !== null`;
211
+ case "comparacao":
212
+ return `${resolverReferenciaPhp(expressao.alvo, variavel)} ${expressao.operador} ${formatarValorPhp(expressao.valor, camposConhecidos, variavel)}`;
213
+ case "pertencimento":
214
+ return `in_array(${resolverReferenciaPhp(expressao.alvo, variavel)}, [${(expressao.valores ?? []).map((valor) => formatarValorPhp(valor, camposConhecidos, variavel)).join(", ")}], true)`;
215
+ case "predicado":
216
+ return "true";
217
+ case "composta":
218
+ return `(${expressao.termos.map((termo) => resolverExpressaoPhp(termo, camposConhecidos, variavel)).join(expressao.operadorLogico === "e" ? " && " : " || ")})`;
219
+ case "negacao":
220
+ return `!(${resolverExpressaoPhp(expressao.termo, camposConhecidos, variavel)})`;
221
+ }
222
+ }
223
+ function garantiaComparacaoExecutavel(expressao, campos) {
224
+ if (expressao.tipo !== "comparacao") {
225
+ return true;
226
+ }
227
+ if (/\squando\s/u.test(expressao.valor)) {
228
+ return false;
229
+ }
230
+ const raiz = expressao.alvo.split(".")[0] ?? expressao.alvo;
231
+ const campo = campos.get(raiz);
232
+ if (!campo) {
233
+ return true;
234
+ }
235
+ if (campo.tipoBase === "Booleano") {
236
+ return expressao.valor === "verdadeiro" || expressao.valor === "falso";
237
+ }
238
+ if (campo.tipoBase === "Numero" || campo.tipoBase === "Inteiro" || campo.tipoBase === "Decimal") {
239
+ return /^-?\d+(?:\.\d+)?$/u.test(expressao.valor);
240
+ }
241
+ return true;
242
+ }
243
+ function finalizarBlocoPhp(linhas) {
244
+ return linhas.length > 0 ? linhas.join("\n") : " // Nenhuma regra executavel declarada.";
245
+ }
246
+ function gerarValidacoes(task) {
247
+ const camposEntrada = new Set(task.input.map((campo) => campo.nome));
248
+ const linhas = [
249
+ ...task.input
250
+ .filter((campo) => campo.modificadores.includes("required"))
251
+ .map((campo) => ` if ($entrada->${campo.nome} === null) {
252
+ throw new \\InvalidArgumentException(${literalPhp(`Campo obrigatorio ausente: ${campo.nome}`)});
253
+ }`),
254
+ ...task.regrasEstruturadas.map((regra) => {
255
+ if (regra.tipo === "predicado") {
256
+ return ` // Predicado declarado em Sema: ${regra.textoOriginal}`;
257
+ }
258
+ return ` if (!(${resolverExpressaoPhp(regra, camposEntrada, "entrada")})) {
259
+ throw new \\InvalidArgumentException(${literalPhp(`Regra violada: ${regra.textoOriginal}`)});
260
+ }`;
261
+ }),
262
+ ...task.rules
263
+ .filter((regra) => !task.regrasEstruturadas.some((estruturada) => estruturada.textoOriginal === regra))
264
+ .map((regra) => ` // Regra declarada em Sema: ${regra}`),
265
+ ];
266
+ return finalizarBlocoPhp(linhas);
267
+ }
268
+ function gerarGarantias(task) {
269
+ const camposSaida = new Set(task.output.map((campo) => campo.nome));
270
+ const camposSaidaMap = new Map(task.output.map((campo) => [campo.nome, campo]));
271
+ const linhas = [
272
+ ...task.garantiasEstruturadas.map((garantia) => {
273
+ if (garantia.tipo === "predicado") {
274
+ return ` // Predicado de garantia declarado em Sema: ${garantia.textoOriginal}`;
275
+ }
276
+ if (!garantiaComparacaoExecutavel(garantia, camposSaidaMap)) {
277
+ return ` // Garantia condicional declarada em Sema: ${garantia.textoOriginal}`;
278
+ }
279
+ return ` if (!(${resolverExpressaoPhp(garantia, camposSaida, "saida")})) {
280
+ throw new \\RuntimeException(${literalPhp(`Garantia violada: ${garantia.textoOriginal}`)});
281
+ }`;
282
+ }),
283
+ ...task.guarantees
284
+ .filter((garantia) => !task.garantiasEstruturadas.some((estruturada) => estruturada.textoOriginal === garantia))
285
+ .map((garantia) => ` // Garantia declarada em Sema: ${garantia}`),
286
+ ];
287
+ return finalizarBlocoPhp(linhas);
288
+ }
289
+ function coletarErrosTask(task) {
290
+ const erros = new Map(Object.entries(task.errors));
291
+ for (const caso of task.tests) {
292
+ const tipoErro = caso.error?.campos.find((campo) => campo.nome === "tipo")?.tipo ?? caso.error?.campos[0]?.tipo;
293
+ if (tipoErro && !erros.has(tipoErro)) {
294
+ erros.set(tipoErro, `Erro sintetico gerado a partir do caso de teste "${caso.nome}".`);
295
+ }
296
+ }
297
+ return erros;
298
+ }
299
+ function classeErroTask(task, codigo) {
300
+ return `${paraPascalCase(task.nome)}${paraPascalCase(codigo)}Erro`;
301
+ }
302
+ function gerarClassesErro(task) {
303
+ return [...coletarErrosTask(task).entries()].map(([codigo, mensagem]) => `final class ${classeErroTask(task, codigo)} extends \\RuntimeException
304
+ {
305
+ public string $codigo = ${literalPhp(codigo)};
306
+
307
+ public function __construct()
308
+ {
309
+ parent::__construct(${literalPhp(mensagem)});
310
+ }
311
+ }
312
+ `).join("\n");
313
+ }
314
+ function gerarMetadadosTask(task) {
315
+ const nome = normalizarNomeParaSimbolo(task.nome);
316
+ const efeitos = task.efeitosEstruturados.map((efeito) => `${efeito.categoria}:${efeito.alvo}${efeito.detalhe ? `:${efeito.detalhe}` : ""}`);
317
+ const impl = task.implementacoesExternas.map((item) => `${item.origem}:${item.caminho}[${item.statusImpl ?? "nao_verificado"}]`);
318
+ return `function contrato_${nome}(): array
319
+ {
320
+ return [
321
+ "nome" => ${literalPhp(task.nome)},
322
+ "input" => ${gerarLiteralCamposPhp(task.input)},
323
+ "output" => ${gerarLiteralCamposPhp(task.output)},
324
+ "effects" => ${gerarArrayStringsPhp(efeitos)},
325
+ "impl" => ${gerarArrayStringsPhp(impl)},
326
+ "errors" => ${gerarMapaErrosPhp(Object.fromEntries(coletarErrosTask(task)))},
327
+ "guarantees" => ${gerarArrayStringsPhp(task.guarantees)},
328
+ ];
329
+ }
330
+ `;
331
+ }
332
+ function gerarPreparacaoSaida(task) {
333
+ const camposSaida = new Set(task.output.map((campo) => campo.nome));
334
+ const camposSaidaMap = new Map(task.output.map((campo) => [campo.nome, campo]));
335
+ const camposOrdenados = ordenarCamposConstrutor(task.output);
336
+ const argumentos = camposOrdenados.map(valorPadraoPhp).join(", ");
337
+ const ajustes = [];
338
+ for (const garantia of task.garantiasEstruturadas) {
339
+ if (garantia.tipo === "pertencimento" && garantia.valores && camposSaida.has(garantia.alvo)) {
340
+ ajustes.push(` $saida->${garantia.alvo} = ${formatarValorPhp(garantia.valores[0] ?? "", camposSaida, "saida")};`);
341
+ }
342
+ if (garantia.tipo === "comparacao" && garantia.valor && camposSaida.has(garantia.alvo.split(".")[0] ?? garantia.alvo) && !garantia.alvo.includes(".") && garantiaComparacaoExecutavel(garantia, camposSaidaMap)) {
343
+ ajustes.push(` $saida->${garantia.alvo} = ${formatarValorPhp(garantia.valor, camposSaida, "saida")};`);
344
+ }
345
+ }
346
+ return ` $saida = new ${paraPascalCase(`${task.nome}_saida`)}(${argumentos});${ajustes.length ? `\n${ajustes.join("\n")}` : ""}`;
347
+ }
348
+ function gerarTask(task) {
349
+ const nome = normalizarNomeParaSimbolo(task.nome);
350
+ const erros = [...coletarErrosTask(task).keys()];
351
+ const blocosErroContexto = erros.map((codigo) => ` if (($contexto["erro_esperado"] ?? null) === ${literalPhp(codigo)}) {
352
+ throw new ${classeErroTask(task, codigo)}();
353
+ }`).join("\n");
354
+ const efeitos = task.efeitosEstruturados.length > 0
355
+ ? task.efeitosEstruturados.map((efeito) => ` // Efeito estruturado: categoria=${efeito.categoria} alvo=${efeito.alvo}${efeito.detalhe ? ` detalhe=${efeito.detalhe}` : ""}${efeito.criticidade ? ` criticidade=${efeito.criticidade}` : ""}`).join("\n")
356
+ : task.effects.map((efeito) => ` // Efeito declarado: ${efeito}`).join("\n") || " // Nenhum efeito declarado.";
357
+ return `
358
+ ${gerarClasseDados(`${task.nome}_entrada`, task.input)}
359
+ ${gerarClasseDados(`${task.nome}_saida`, task.output)}
360
+ ${gerarClassesErro(task)}
361
+ ${gerarMetadadosTask(task)}
362
+
363
+ function validar_${nome}(${paraPascalCase(`${task.nome}_entrada`)} $entrada): void
364
+ {
365
+ ${gerarValidacoes(task)}
366
+ }
367
+
368
+ function verificar_garantias_${nome}(${paraPascalCase(`${task.nome}_saida`)} $saida): void
369
+ {
370
+ ${gerarGarantias(task)}
371
+ }
372
+
373
+ function executar_${nome}(${paraPascalCase(`${task.nome}_entrada`)} $entrada, array $contexto = []): ${paraPascalCase(`${task.nome}_saida`)}
374
+ {
375
+ ${blocosErroContexto ? `${blocosErroContexto}\n` : ""} validar_${nome}($entrada);
376
+ ${task.stateContract ? ` // Vinculo de estado: ${task.stateContract.nomeEstado ?? "nao_definido"}\n // Transicoes declaradas: ${task.stateContract.transicoes.map((transicao) => `${transicao.origem}->${transicao.destino}`).join(", ") || "nenhuma"}\n` : ""}${task.implementacoesExternas.map((impl) => ` // Implementacao externa: origem=${impl.origem} caminho=${impl.caminho} status=${impl.statusImpl ?? "nao_verificado"}`).join("\n")}
377
+ ${efeitos}
378
+ ${gerarPreparacaoSaida(task)}
379
+ verificar_garantias_${nome}($saida);
380
+ return $saida;
381
+ }
382
+ `;
383
+ }
384
+ function formatarLiteralTestePhp(valor, tipoDeclarado) {
385
+ const texto = valor.trim().replace(/^["']|["']$/g, "");
386
+ if (["Texto", "Id", "Email", "Url", "Data", "DataHora"].includes(tipoDeclarado ?? "")) {
387
+ return literalPhp(texto);
388
+ }
389
+ if (["Numero", "Inteiro", "Decimal"].includes(tipoDeclarado ?? "") && /^-?\d+(?:\.\d+)?$/.test(texto)) {
390
+ return texto;
391
+ }
392
+ if ((tipoDeclarado ?? "") === "Booleano") {
393
+ if (texto === "verdadeiro") {
394
+ return "true";
395
+ }
396
+ if (texto === "falso") {
397
+ return "false";
398
+ }
399
+ }
400
+ if (/^-?\d+(?:\.\d+)?$/.test(texto)) {
401
+ return texto;
402
+ }
403
+ if (texto === "verdadeiro") {
404
+ return "true";
405
+ }
406
+ if (texto === "falso") {
407
+ return "false";
408
+ }
409
+ if (texto === "nulo") {
410
+ return "null";
411
+ }
412
+ return literalPhp(texto);
413
+ }
414
+ function literalBlocoPhp(bloco) {
415
+ const pares = [
416
+ ...bloco.campos.map((campo) => `${literalPhp(campo.nome)} => ${formatarLiteralTestePhp(campo.tipo)}`),
417
+ ...bloco.blocos.map((subbloco) => `${literalPhp(subbloco.nome)} => ${literalBlocoPhp(subbloco.conteudo)}`),
418
+ ];
419
+ return `[${pares.join(", ")}]`;
420
+ }
421
+ function gerarInstanciaEntradaTeste(task, given) {
422
+ const camposGiven = new Map(given.campos.map((campo) => [campo.nome, campo.tipo]));
423
+ const blocosGiven = new Map(given.blocos.map((bloco) => [bloco.nome, bloco.conteudo]));
424
+ const tiposEntrada = new Map(task.input.map((campo) => [campo.nome, campo.tipo]));
425
+ const argumentos = ordenarCamposConstrutor(task.input).map((campo) => {
426
+ const valorCampo = camposGiven.get(campo.nome);
427
+ if (valorCampo !== undefined) {
428
+ return formatarLiteralTestePhp(valorCampo, tiposEntrada.get(campo.nome));
429
+ }
430
+ const bloco = blocosGiven.get(campo.nome);
431
+ if (bloco) {
432
+ return literalBlocoPhp(bloco);
433
+ }
434
+ return valorPadraoPhp(campo);
435
+ });
436
+ return `new ${paraPascalCase(`${task.nome}_entrada`)}(${argumentos.join(", ")})`;
437
+ }
438
+ function gerarTestesPhp(modulo, arquivoModulo) {
439
+ const testes = modulo.tasks.flatMap((task) => task.tests.map((caso, indice) => ({ task, caso, indice })));
440
+ if (testes.length === 0) {
441
+ return undefined;
442
+ }
443
+ const funcoes = testes.map(({ task, caso, indice }) => {
444
+ const nomeTeste = `test_${normalizarNomeParaSimbolo(task.nome)}_${indice + 1}`;
445
+ const entrada = gerarInstanciaEntradaTeste(task, caso.given);
446
+ const tipoErro = caso.error?.campos.find((campo) => campo.nome === "tipo")?.tipo ?? caso.error?.campos[0]?.tipo;
447
+ if (tipoErro) {
448
+ return `function ${nomeTeste}(): void
449
+ {
450
+ try {
451
+ executar_${normalizarNomeParaSimbolo(task.nome)}(${entrada}, ["erro_esperado" => ${literalPhp(tipoErro)}]);
452
+ } catch (${classeErroTask(task, tipoErro)} $erro) {
453
+ assert_sema($erro->codigo === ${literalPhp(tipoErro)}, "codigo de erro inesperado");
454
+ return;
455
+ }
456
+ throw new \\RuntimeException(${literalPhp(`Caso ${caso.nome} deveria falhar com ${tipoErro}`)});
457
+ }`;
458
+ }
459
+ return `function ${nomeTeste}(): void
460
+ {
461
+ $resultado = executar_${normalizarNomeParaSimbolo(task.nome)}(${entrada});
462
+ assert_sema($resultado !== null, ${literalPhp(`Caso ${caso.nome} nao retornou resultado`)});
463
+ }`;
464
+ });
465
+ const lista = testes.map(({ task, caso, indice }) => ` [${literalPhp(caso.nome)}, "test_${normalizarNomeParaSimbolo(task.nome)}_${indice + 1}"],`).join("\n");
466
+ return `${gerarCabecalhoSemaPhp(modulo, "teste")}require_once __DIR__ . "/${path.posix.basename(arquivoModulo)}";
467
+
468
+ function assert_sema(bool $condicao, string $mensagem): void
469
+ {
470
+ if (!$condicao) {
471
+ throw new \\RuntimeException($mensagem);
472
+ }
473
+ }
474
+
475
+ ${funcoes.join("\n\n")}
476
+
477
+ $testes = [
478
+ ${lista}
479
+ ];
480
+
481
+ foreach ($testes as [$nome, $funcao]) {
482
+ fwrite(STDOUT, "test " . $nome . PHP_EOL);
483
+ $funcao();
484
+ }
485
+
486
+ fwrite(STDOUT, "ok " . count($testes) . " testes" . PHP_EOL);
487
+ `;
488
+ }
489
+ function gerarCabecalhoSemaPhp(modulo, tipo = "contrato") {
490
+ const descricoes = {
491
+ contrato: "artefato PHP gerado para executar e revisar as regras declaradas no contrato Sema.",
492
+ teste: "testes PHP gerados a partir dos casos do contrato Sema.",
493
+ };
494
+ return [
495
+ "<?php",
496
+ "// SEMA-GOVERNED",
497
+ `// Modulo de origem: ${modulo.nome}`,
498
+ "// Consulte o contrato .sema aplicavel antes de editar este arquivo.",
499
+ "// Rastreabilidade: outros contratos .sema podem governar este mesmo arquivo via vinculos.",
500
+ "// Para IA fraca/media/forte: chame Sema, rode docs-impacto e drift antes de alterar codigo.",
501
+ `// Descricao: ${descricoes[tipo]}`,
502
+ "",
503
+ "declare(strict_types=1);",
504
+ "",
505
+ ].join("\n");
506
+ }
507
+ export function gerarPhp(modulo) {
508
+ const nomeBase = normalizarNomeModulo(modulo.nome).replace(/\./g, "_");
509
+ const estrutura = descreverEstruturaModulo(modulo.nome);
510
+ const interops = modulo.interoperabilidades.map((interop) => `// Interop externo ${interop.origem}: ${interop.caminho}`).join("\n");
511
+ const tiposExternos = coletarTiposExternos(modulo).map((tipo) => `final class ${paraPascalCase(tipo)}
512
+ {
513
+ }
514
+ `).join("\n");
515
+ const tipos = modulo.types.map((tipo) => gerarClasseDados(tipo.nome, tipo.definicao.campos)).join("\n");
516
+ const entidades = modulo.entities.map((entity) => gerarClasseDados(entity.nome, entity.campos)).join("\n");
517
+ const enums = modulo.enums.map(gerarEnum).join("\n");
518
+ const states = modulo.states.map((state) => `// State${state.nome ? ` ${state.nome}` : ""}: campos=${state.campos.length} invariantes=${state.invariantes.length} transicoes=${state.transicoes.length}`).join("\n");
519
+ const flows = modulo.flows.map((flow) => `// Flow ${flow.nome}: etapas=${flow.etapasEstruturadas.length} tasks=${flow.tasksReferenciadas.join(", ") || "nenhuma"}`).join("\n");
520
+ const routes = modulo.routes.map((route) => `// Route ${route.nome}: metodo=${route.metodo ?? "nao_definido"} caminho=${route.caminho ?? "nao_definido"} task=${route.task ?? "nao_definida"}`).join("\n");
521
+ const tasks = modulo.tasks.map(gerarTask).join("\n");
522
+ const codigo = `${gerarCabecalhoSemaPhp(modulo)}${interops ? `${interops}\n` : ""}${tiposExternos ? `${tiposExternos}\n` : ""}${tipos ? `${tipos}\n` : ""}${entidades ? `${entidades}\n` : ""}${enums ? `${enums}\n` : ""}${tasks}${states ? `\n${states}` : ""}${flows ? `\n${flows}` : ""}${routes ? `\n${routes}` : ""}\n`;
523
+ const caminhoModulo = estrutura.contextoRelativo
524
+ ? path.posix.join(estrutura.contextoRelativo, `${estrutura.nomeArquivo}.php`)
525
+ : `${nomeBase}.php`;
526
+ const arquivos = [{ caminhoRelativo: caminhoModulo, conteudo: codigo }];
527
+ const testes = gerarTestesPhp(modulo, caminhoModulo);
528
+ if (testes) {
529
+ arquivos.push({
530
+ caminhoRelativo: estrutura.contextoRelativo
531
+ ? path.posix.join(estrutura.contextoRelativo, `test_${estrutura.nomeArquivo}.php`)
532
+ : `test_${nomeBase}.php`,
533
+ conteudo: testes,
534
+ });
535
+ }
536
+ return arquivos;
537
+ }
538
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "@sema/gerador-php",
3
+ "version": "1.5.55",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts"
7
+ }
@@ -1,4 +1,4 @@
1
- export type AlvoGeracao = "typescript" | "python" | "dart" | "lua" | "javascript" | "html" | "css";
1
+ export type AlvoGeracao = "typescript" | "python" | "dart" | "lua" | "javascript" | "html" | "css" | "php";
2
2
  export type FrameworkGeracao = "base" | "nestjs" | "fastapi";
3
3
  export interface ArquivoGerado {
4
4
  caminhoRelativo: string;
@@ -23,3 +23,4 @@ export declare function mapearTipoParaDart(tipo: string): string;
23
23
  export declare function mapearTipoParaLua(tipo: string): string;
24
24
  export declare function mapearTipoParaJavaScript(tipo: string): string;
25
25
  export declare function mapearTipoParaInputHtml(tipo: string): string;
26
+ export declare function mapearTipoParaPhp(tipo: string): string;
@@ -313,4 +313,35 @@ export function mapearTipoParaInputHtml(tipo) {
313
313
  };
314
314
  return tabela[tipo] ?? "text";
315
315
  }
316
+ export function mapearTipoParaPhp(tipo) {
317
+ const limpo = tipo.trim();
318
+ if (/^Opcional<.+>$/.test(limpo)) {
319
+ return `${mapearTipoParaPhp(limpo.slice("Opcional<".length, -1))}|null`;
320
+ }
321
+ const uniao = dividirTipoNoNivelRaiz(limpo, "|");
322
+ if (uniao.length > 1) {
323
+ return uniao.map((item) => mapearTipoParaPhp(item)).join("|");
324
+ }
325
+ if (limpo.endsWith("[]")) {
326
+ return "array";
327
+ }
328
+ if (/^Lista<.+>$/.test(limpo) || /^Mapa<.+>$/.test(limpo)) {
329
+ return "array";
330
+ }
331
+ const tabela = {
332
+ Texto: "string",
333
+ Numero: "float",
334
+ Inteiro: "int",
335
+ Decimal: "float",
336
+ Booleano: "bool",
337
+ Data: "string",
338
+ DataHora: "string",
339
+ Id: "string",
340
+ Email: "string",
341
+ Url: "string",
342
+ Json: "array",
343
+ Vazio: "void",
344
+ };
345
+ return tabela[limpo] ?? "mixed";
346
+ }
316
347
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semacode/cli",
3
- "version": "1.5.54",
3
+ "version": "1.5.55",
4
4
  "description": "Local semantic governance CLI for AI agents: contracts, drift, impact, documentation gates, and code generation.",
5
5
  "type": "module",
6
6
  "icon": "logo.png",
@@ -39,15 +39,16 @@
39
39
  "LICENSE"
40
40
  ],
41
41
  "dependencies": {
42
- "@sema/nucleo": "1.5.54",
43
- "@sema/gerador-dart": "1.5.54",
44
- "@sema/gerador-lua": "1.5.54",
45
- "@sema/gerador-python": "1.5.54",
46
- "@sema/gerador-typescript": "1.5.54",
47
- "@sema/gerador-javascript": "1.5.54",
48
- "@sema/gerador-html": "1.5.54",
49
- "@sema/gerador-css": "1.5.54",
50
- "@sema/padroes": "1.5.54",
42
+ "@sema/nucleo": "1.5.55",
43
+ "@sema/gerador-dart": "1.5.55",
44
+ "@sema/gerador-lua": "1.5.55",
45
+ "@sema/gerador-python": "1.5.55",
46
+ "@sema/gerador-typescript": "1.5.55",
47
+ "@sema/gerador-javascript": "1.5.55",
48
+ "@sema/gerador-html": "1.5.55",
49
+ "@sema/gerador-css": "1.5.55",
50
+ "@sema/gerador-php": "1.5.55",
51
+ "@sema/padroes": "1.5.55",
51
52
  "typescript": "^5.8.3"
52
53
  },
53
54
  "bundledDependencies": [
@@ -59,6 +60,7 @@
59
60
  "@sema/gerador-javascript",
60
61
  "@sema/gerador-html",
61
62
  "@sema/gerador-css",
63
+ "@sema/gerador-php",
62
64
  "@sema/padroes"
63
65
  ]
64
66
  }