@semacode/cli 1.5.17 → 1.5.19
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/AGENTS.md +268 -260
- package/LICENSE +22 -22
- package/README.md +93 -61
- package/SEMA_BRIEF.curto.txt +8 -6
- package/SEMA_BRIEF.md +71 -22
- package/SEMA_BRIEF.micro.txt +7 -5
- package/SEMA_INDEX.json +931 -193
- package/dist/controleComercialSupabase.d.ts +326 -0
- package/dist/controleComercialSupabase.js +310 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/docs.js +48 -20
- package/dist/docs.js.map +1 -1
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +119 -116
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +1 -1
- package/dist/importador.js +1 -200
- package/dist/importador.js.map +1 -1
- package/dist/index.js +1924 -493
- package/dist/index.js.map +1 -1
- package/dist/mcpRemoto.d.ts +32 -0
- package/dist/mcpRemoto.js +61 -0
- package/dist/mcpRemoto.js.map +1 -0
- package/dist/projeto.js +3 -21
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +109 -102
- package/docs/cli.md +89 -33
- package/docs/como-ensinar-a-sema-para-ia.md +42 -36
- package/docs/deploy.md +231 -43
- package/docs/documentacao.md +61 -36
- package/docs/env.md +63 -14
- package/docs/extensao-vscode.md +12 -4
- package/docs/fluxo-pratico-ia-sema.md +45 -35
- package/docs/instalacao-e-primeiro-uso.md +52 -30
- package/docs/integracao-com-ia.md +44 -35
- package/docs/mcp.md +270 -31
- package/docs/pagamento-ponta-a-ponta.md +40 -24
- package/docs/persistencia-vendor-first.md +11 -5
- package/docs/prompt-base-ia-sema.md +18 -11
- package/docs/rollback.md +17 -15
- package/docs/sintaxe.md +37 -229
- package/exemplos/agendamento.sema +105 -106
- package/exemplos/assinatura.sema +133 -136
- package/exemplos/auditoria.sema +89 -88
- package/exemplos/autenticacao.sema +125 -125
- package/exemplos/author_obra_comum.sema +294 -0
- package/exemplos/author_tema_sensivel.sema +264 -0
- package/exemplos/automacao.sema +107 -107
- package/exemplos/cadastro_usuario.sema +54 -54
- package/exemplos/calculadora.sema +78 -78
- package/exemplos/crud_simples.sema +89 -89
- package/exemplos/estoque.sema +127 -126
- package/exemplos/exportacao.sema +94 -94
- package/exemplos/fila.sema +130 -131
- package/exemplos/integracao_externa.sema +94 -94
- package/exemplos/multi_tenant.sema +140 -140
- package/exemplos/notificacao.sema +149 -98
- package/exemplos/operacao_estrategia.sema +633 -402
- package/exemplos/pagamento.sema +434 -222
- package/exemplos/pagamento_dominio.sema +35 -35
- package/exemplos/pedido.sema +255 -119
- package/exemplos/permissao.sema +121 -121
- package/exemplos/persistencia_vendor_first.sema +86 -86
- package/exemplos/profile_game.sema +114 -0
- package/exemplos/profile_legal.sema +105 -0
- package/exemplos/profile_ops.sema +110 -0
- package/exemplos/profile_research.sema +104 -0
- package/exemplos/profile_software.sema +123 -0
- package/exemplos/profile_workflow_n8n.sema +99 -0
- package/exemplos/relatorio.sema +93 -93
- package/exemplos/replica_analitica_erp.sema +160 -0
- package/exemplos/testes_embutidos.sema +45 -45
- package/exemplos/tratamento_erro.sema +157 -157
- package/exemplos/upload_arquivo.sema +93 -93
- package/exemplos/webhook.sema +94 -96
- package/llms-full.txt +34 -34
- package/llms.txt +17 -17
- package/node_modules/@sema/gerador-css/dist/index.js +563 -563
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +90 -90
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.js +122 -96
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
- package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +15 -15
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
# Prompt-Base Oficial para IA Trabalhar com Sema
|
|
2
2
|
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
3
9
|
Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
|
|
4
10
|
|
|
5
|
-
O objetivo
|
|
11
|
+
O objetivo não é fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema não foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA. Humanos escrevem, revisam e aprovam; o consumidor primário e o agente.
|
|
6
12
|
|
|
7
13
|
## Prompt-base
|
|
8
14
|
|
|
9
15
|
Use o texto abaixo como base:
|
|
10
16
|
|
|
11
17
|
```text
|
|
12
|
-
Voce esta trabalhando com Sema, um
|
|
18
|
+
Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo.
|
|
13
19
|
|
|
14
|
-
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e
|
|
20
|
+
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e traduzir intencao operacional para IA, nao para substituir arquitetura, design ou aprovacao humana.
|
|
15
21
|
|
|
16
|
-
Trate a Sema como
|
|
22
|
+
Trate a Sema como contrato semantico executavel e protocolo de governanca IA-first. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.
|
|
17
23
|
|
|
18
24
|
Fontes de verdade, em ordem:
|
|
19
25
|
1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele
|
|
@@ -31,6 +37,7 @@ Regras de operacao:
|
|
|
31
37
|
- use o formatador oficial da Sema como fonte unica de estilo
|
|
32
38
|
- use diagnosticos estruturados como contrato de correcao
|
|
33
39
|
- use a IR como fonte de verdade semantica quando houver duvida
|
|
40
|
+
- use `predicadoCanonico` como normalizacao opcional; preserve o `predicado` original
|
|
34
41
|
- nao conclua uma alteracao sem validar e verificar o modulo
|
|
35
42
|
- trate `importar` como bootstrap revisavel, nao como contrato final automatico
|
|
36
43
|
- trate `drift` como medicao de verdade contra codigo vivo
|
|
@@ -58,7 +65,7 @@ Se algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao impr
|
|
|
58
65
|
Se voce quiser um prompt menor para uso frequente:
|
|
59
66
|
|
|
60
67
|
```text
|
|
61
|
-
Trabalhe com Sema como
|
|
68
|
+
Trabalhe com Sema como contrato semantico IA-first orientado a agente. Nao invente sintaxe. Use os exemplos oficiais e a gramatica como referencia de escrita. Use `ir --json` como fonte de verdade semantica, `diagnosticos --json` como fonte de correcao e `sema formatar` como fonte unica de estilo. Antes de encerrar, rode validacao e verificacao.
|
|
62
69
|
```
|
|
63
70
|
|
|
64
71
|
Se voce quiser um prompt ainda mais curto e pronto para colar, use:
|
|
@@ -67,9 +74,9 @@ Se voce quiser um prompt ainda mais curto e pronto para colar, use:
|
|
|
67
74
|
sema prompt-curto caminho/arquivo.sema --curto --para mudanca
|
|
68
75
|
```
|
|
69
76
|
|
|
70
|
-
## Variacao para
|
|
77
|
+
## Variacao para revisão
|
|
71
78
|
|
|
72
|
-
Use
|
|
79
|
+
Use está versão quando a IA for revisar `.sema` em vez de criar:
|
|
73
80
|
|
|
74
81
|
```text
|
|
75
82
|
Revise este modulo Sema como contrato semantico executavel. Procure incoerencias entre input, output, rules, effects, guarantees, state, flow, route e error. Considere a IR e os diagnosticos da CLI como fonte de verdade. Nao critique estilo fora do que o formatador oficial resolveria automaticamente.
|
|
@@ -77,15 +84,15 @@ Revise este modulo Sema como contrato semantico executavel. Procure incoerencias
|
|
|
77
84
|
|
|
78
85
|
## Variacao para geracao
|
|
79
86
|
|
|
80
|
-
Use
|
|
87
|
+
Use está versão quando a IA for escrever módulo novo:
|
|
81
88
|
|
|
82
89
|
```text
|
|
83
90
|
Gere um modulo Sema seguindo a gramatica oficial, os exemplos do projeto e o estilo do formatador canonico. Estruture o modulo como contrato semantico executavel, com blocos explicitos para entrada, saida, regras, efeitos, garantias, erros, estado, fluxo e testes quando fizer sentido. Nao use sintaxe fora do repertorio ja suportado pela linguagem.
|
|
84
91
|
```
|
|
85
92
|
|
|
86
|
-
## Variacao para correcao guiada por
|
|
93
|
+
## Variacao para correcao guiada por diagnóstico
|
|
87
94
|
|
|
88
|
-
Use
|
|
95
|
+
Use está versão quando a IA já tiver erro concreto para corrigir:
|
|
89
96
|
|
|
90
97
|
```text
|
|
91
98
|
Corrija este modulo Sema a partir dos diagnosticos estruturados da CLI. Preserve a intencao do contrato e altere apenas o necessario para eliminar as falhas. Depois da correcao, aplique o formatador oficial e revalide.
|
|
@@ -101,4 +108,4 @@ Idealmente, acompanhe o prompt com:
|
|
|
101
108
|
- o resultado de `sema diagnosticos --json`, se houver erro
|
|
102
109
|
- um exemplo oficial parecido
|
|
103
110
|
|
|
104
|
-
Sem isso, a IA pode
|
|
111
|
+
Sem isso, a IA pode até acertar. Com isso, ela trabalha direito.
|
package/docs/rollback.md
CHANGED
|
@@ -1,47 +1,49 @@
|
|
|
1
1
|
# Rollback
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Rollback de release pública da Sema deve preservar rastreabilidade. NPM não deve ser tratado como pasta temporaria: apagar versão publicada e medida extrema e limitada.
|
|
4
10
|
|
|
5
11
|
## Quando aplicar
|
|
6
12
|
|
|
7
|
-
- CLI
|
|
8
|
-
- VSIX publicada
|
|
13
|
+
- CLI publicada quebra instalação básica.
|
|
14
|
+
- VSIX publicada não inicia ou quebra o Language Server.
|
|
9
15
|
- Instaladores baixam asset errado.
|
|
10
|
-
- Release notes ou checksums apontam para artefato
|
|
16
|
+
- Release notes ou checksums apontam para artefato inválido.
|
|
11
17
|
|
|
12
18
|
## Primeira resposta
|
|
13
19
|
|
|
14
20
|
1. Marque o problema no GitHub Release.
|
|
15
|
-
2. Reponte `latest` no NPM para a
|
|
21
|
+
2. Reponte `latest` no NPM para a última versão boa, quando necessário:
|
|
16
22
|
|
|
17
23
|
```bash
|
|
18
24
|
npm dist-tag add @semacode/cli@<versao-boa> latest
|
|
19
|
-
npm dist-tag add @semacode/mcp@<versao-boa> latest
|
|
20
25
|
```
|
|
21
26
|
|
|
22
|
-
3. Se o problema for
|
|
23
|
-
4. Prefira publicar patch corretivo (`1.5.
|
|
27
|
+
3. Se o problema for só VSIX ou asset de release, substitua o asset no GitHub Release ou publique uma release patch.
|
|
28
|
+
4. Prefira publicar patch corretivo (`1.5.19`, por exemplo) quando o pacote já saiu para usuários.
|
|
24
29
|
|
|
25
|
-
##
|
|
30
|
+
## Validação de rollback
|
|
26
31
|
|
|
27
32
|
```bash
|
|
28
33
|
npm view @semacode/cli dist-tags --json
|
|
29
|
-
npm view @semacode/mcp dist-tags --json
|
|
30
34
|
npm install -g @semacode/cli@latest
|
|
31
|
-
npm install -g @semacode/mcp@latest
|
|
32
35
|
sema --version
|
|
33
|
-
sema-mcp --help
|
|
34
36
|
```
|
|
35
37
|
|
|
36
38
|
## Git
|
|
37
39
|
|
|
38
|
-
Se o commit foi empurrado mas a release falhou antes de publicar NPM, corrija com novo commit. Evite reescrever `main` depois de push
|
|
40
|
+
Se o commit foi empurrado mas a release falhou antes de publicar NPM, corrija com novo commit. Evite reescrever `main` depois de push público.
|
|
39
41
|
|
|
40
|
-
Se o tag foi criado errado e ainda
|
|
42
|
+
Se o tag foi criado errado e ainda não existe release consumida:
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
45
|
git tag -d v<versao>
|
|
44
46
|
git push origin :refs/tags/v<versao>
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
Use isso somente antes de
|
|
49
|
+
Use isso somente antes de usuários consumirem o tag.
|
package/docs/sintaxe.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Sintaxe Canonica
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- sema:i18n -->
|
|
4
|
+
> EN: English first. The canonical operational body below may still be in Portuguese until full translation lands.
|
|
5
|
+
> PT: Português depois, com acentos preservados.
|
|
6
|
+
> ES: Español al final; não traduza comandos, rotas nem sómbolos `.sema` sem contrato.
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, na IR, no drift e no contexto de IA. A escrita humana pode ser legivel, mas o alvo principal da sintaxe e gerar contrato consumivel por agente.
|
|
4
10
|
|
|
5
11
|
## Regras basicas
|
|
6
12
|
|
|
@@ -19,27 +25,6 @@ A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, n
|
|
|
19
25
|
- `entity`
|
|
20
26
|
- `enum`
|
|
21
27
|
- `state`
|
|
22
|
-
- `book`
|
|
23
|
-
- `work`
|
|
24
|
-
- `part`
|
|
25
|
-
- `chapter`
|
|
26
|
-
- `section`
|
|
27
|
-
- `scene`
|
|
28
|
-
- `character`
|
|
29
|
-
- `arc`
|
|
30
|
-
- `audience`
|
|
31
|
-
- `thesis`
|
|
32
|
-
- `argument`
|
|
33
|
-
- `claim`
|
|
34
|
-
- `source`
|
|
35
|
-
- `concept`
|
|
36
|
-
- `example`
|
|
37
|
-
- `voice`
|
|
38
|
-
- `style_rule`
|
|
39
|
-
- `lexicon`
|
|
40
|
-
- `motif`
|
|
41
|
-
- `canon`
|
|
42
|
-
- `agent`
|
|
43
28
|
- `task`
|
|
44
29
|
- `flow`
|
|
45
30
|
- `route`
|
|
@@ -79,6 +64,24 @@ A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, n
|
|
|
79
64
|
- `when`
|
|
80
65
|
- `expect`
|
|
81
66
|
|
|
67
|
+
## Tipos primitivos
|
|
68
|
+
|
|
69
|
+
Tipos primitivos reconhecidos diretamente:
|
|
70
|
+
|
|
71
|
+
- `Texto`
|
|
72
|
+
- `Numero`
|
|
73
|
+
- `Inteiro`
|
|
74
|
+
- `Decimal`
|
|
75
|
+
- `Booleano`
|
|
76
|
+
- `Data`
|
|
77
|
+
- `Timestamp`
|
|
78
|
+
- `Objeto`
|
|
79
|
+
- `Id`
|
|
80
|
+
- `Email`
|
|
81
|
+
- `Json`
|
|
82
|
+
|
|
83
|
+
`Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
|
|
84
|
+
|
|
82
85
|
## Tipos compostos
|
|
83
86
|
|
|
84
87
|
```sema
|
|
@@ -98,154 +101,24 @@ Formas suportadas:
|
|
|
98
101
|
- `T1|T2`
|
|
99
102
|
- `T?`
|
|
100
103
|
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
O profile Author modela obra autoral, nao apenas romance. Ele pode descrever ficcao, nao-ficcao, livro tecnico, ensaio, manual, biografia, pesquisa narrada, curso em formato de livro ou manifesto. A ideia e governar intencao, publico, promessa, voz, estrutura, argumentos, fontes, continuidade e regras de estilo.
|
|
104
|
-
|
|
105
|
-
Blocos Author suportados:
|
|
104
|
+
## Predicados normalizados
|
|
106
105
|
|
|
107
|
-
|
|
108
|
-
- `part`, `chapter`, `section`: estrutura editorial
|
|
109
|
-
- `scene`, `character`, `arc`: narrativa quando a obra tiver ficcao ou relato
|
|
110
|
-
- `audience`, `thesis`, `argument`, `claim`, `source`, `concept`, `example`: nao-ficcao, ensino, pesquisa e argumentacao
|
|
111
|
-
- `voice`, `style_rule`, `lexicon`, `motif`, `canon`: voz, vocabulario, repeticoes, proibicoes e continuidade
|
|
106
|
+
Predicados escritos em contrato preservam o texto original em `predicado`. Quando a CLI reconhece uma forma comum, a expressao estruturada pode expor também `predicadoCanonico`.
|
|
112
107
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
Todo modulo com blocos Author tambem recebe no IR a regra sintetica `regras_gerais_author`. Ela aplica automaticamente o piso editorial geral: mostrar por evidencia, causa e consequencia, cena com dupla funcao, exposicao com atrito, dialogo com subtexto, final sem slogan, morte com peso estrutural, especificidade sensorial, voz distinta e anti-cliche adaptativa. Regras locais da obra podem ser mais fortes, mas nao devem apagar esse piso.
|
|
116
|
-
|
|
117
|
-
Quando a obra declara um tema sensivel ou factual, como `autismo`, `saude`, `diagnostico`, `neurodiversidade`, `educacao inclusiva`, `juridico` ou `financeiro`, o contrato deixa de ser apenas orientativo. A validacao exige `book/work`, `audience`, `claim`, `source`, `style_rule`, `agent` e um `flow` chamando esse agent. Claims sensiveis precisam declarar `source/fonte/evidencia` e `confidence/confianca`.
|
|
108
|
+
Exemplo:
|
|
118
109
|
|
|
119
110
|
```sema
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
proposito: "ensinar governanca de agentes"
|
|
124
|
-
tipo: nao_ficcao
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
audience devs {
|
|
128
|
-
nivel: intermediario
|
|
129
|
-
promessa: "sair com um protocolo aplicavel"
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
claim contratos_reduzem_adivinhacao {
|
|
133
|
-
source: pesquisa_interna
|
|
134
|
-
confidence: media
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
voice didatica {
|
|
138
|
-
tom: claro
|
|
139
|
-
ritmo: progressivo
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
style_rule anti_texto_raso {
|
|
143
|
-
proibido {
|
|
144
|
-
frase: "de alguma forma"
|
|
145
|
-
cliche: "o tempo parecia parar"
|
|
146
|
-
}
|
|
147
|
-
ecos {
|
|
148
|
-
palavra: "eco"
|
|
149
|
-
}
|
|
150
|
-
tolerancia {
|
|
151
|
-
max_repeticao_palavra_por_trecho: 2
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
agent revisor_estilo {
|
|
156
|
-
role: editor_author
|
|
157
|
-
goal: cortar_cliche_e_eco
|
|
158
|
-
tools {
|
|
159
|
-
ler_contrato
|
|
160
|
-
analisar_trecho
|
|
161
|
-
}
|
|
162
|
-
memory {
|
|
163
|
-
canon
|
|
164
|
-
style_rule
|
|
165
|
-
}
|
|
166
|
-
policy {
|
|
167
|
-
nao_reescrever_sem_aprovacao
|
|
168
|
-
citar_trechos_afetados
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
flow revisar_secao {
|
|
173
|
-
trecho: Texto
|
|
174
|
-
etapa estilo usa revisor_estilo com trecho = trecho
|
|
175
|
-
}
|
|
111
|
+
rules {
|
|
112
|
+
email deve_ser email_valido
|
|
113
|
+
nome deve_ser preenchido
|
|
176
114
|
}
|
|
177
115
|
```
|
|
178
116
|
|
|
179
|
-
`
|
|
180
|
-
|
|
181
|
-
Exemplo de obra sensivel:
|
|
182
|
-
|
|
183
|
-
```sema
|
|
184
|
-
module livro.autismo {
|
|
185
|
-
work guia_autismo {
|
|
186
|
-
titulo: "Autismo sem reducionismo"
|
|
187
|
-
proposito: "orientar familias sem substituir avaliacao clinica"
|
|
188
|
-
tema: autismo
|
|
189
|
-
sensivel: verdadeiro
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
audience familias_e_educadores {
|
|
193
|
-
publico: pais_educadores_pessoas_autistas
|
|
194
|
-
limites: "nao substitui avaliacao clinica"
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
claim autismo_e_espectro {
|
|
198
|
-
texto: "autismo e um espectro com manifestacoes variadas"
|
|
199
|
-
source: dsm5_tr
|
|
200
|
-
confidence: alta
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
source dsm5_tr {
|
|
204
|
-
tipo: referencia_clinica
|
|
205
|
-
confianca: alta
|
|
206
|
-
}
|
|
117
|
+
Na IR, `email_valido` continua existindo como escrito e pode receber uma normalizacao como `valid_email`; `preenchido` pode receber `filled`. Esse campo e opcional e serve a agente/automacao, não muda a sintaxe pública.
|
|
207
118
|
|
|
208
|
-
|
|
209
|
-
proibido {
|
|
210
|
-
generalizacao: "todo autista"
|
|
211
|
-
infantilizacao: "anjinho especial"
|
|
212
|
-
promessa: "cura garantida"
|
|
213
|
-
}
|
|
214
|
-
evitar {
|
|
215
|
-
frase: "superar o autismo"
|
|
216
|
-
}
|
|
217
|
-
}
|
|
119
|
+
## Persistência vendor-first
|
|
218
120
|
|
|
219
|
-
|
|
220
|
-
role: revisor_sensibilidade
|
|
221
|
-
goal: checar_fontes_linguagem_e_generalizacoes
|
|
222
|
-
tools {
|
|
223
|
-
ler_contrato
|
|
224
|
-
verificar_claim
|
|
225
|
-
revisar_trecho
|
|
226
|
-
}
|
|
227
|
-
memory {
|
|
228
|
-
source
|
|
229
|
-
style_rule
|
|
230
|
-
audience
|
|
231
|
-
}
|
|
232
|
-
policy {
|
|
233
|
-
nao_diagnosticar
|
|
234
|
-
nao_prometer_tratamento
|
|
235
|
-
citar_trechos_afetados
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
flow revisar_capitulo {
|
|
240
|
-
trecho: Texto
|
|
241
|
-
etapa sensibilidade usa checador_sensibilidade com trecho = trecho
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Persistencia vendor-first
|
|
247
|
-
|
|
248
|
-
O bloco `database` modela banco e recursos persistidos sem apagar as diferencas entre engines.
|
|
121
|
+
O bloco `database` modela banco e recursos persistidos sem apagar as diferenças entre engines.
|
|
249
122
|
|
|
250
123
|
Estrutura base:
|
|
251
124
|
|
|
@@ -333,78 +206,13 @@ database principal_redis {
|
|
|
333
206
|
|
|
334
207
|
## Compatibilidade declarada
|
|
335
208
|
|
|
336
|
-
O IR de
|
|
209
|
+
O IR de persistência calcula compatibilidade por recurso com quatro estados:
|
|
337
210
|
|
|
338
211
|
- `nativo`
|
|
339
212
|
- `adaptado`
|
|
340
213
|
- `parcial`
|
|
341
214
|
- `invalido`
|
|
342
215
|
|
|
343
|
-
Isso existe para deixar
|
|
344
|
-
|
|
345
|
-
O mesmo principio vale para runtime de orquestracao. Superficies como `webhook`, `cron`, `worker`, `evento` e `fila` podem ser medidas contra familias como `n8n`, mas o contrato continua canonicamente modelado em Sema, sem rebaixar a linguagem para a sintaxe do adapter alvo.
|
|
346
|
-
|
|
347
|
-
## Interop e implementacao externa
|
|
348
|
-
|
|
349
|
-
`use` e `impl` aceitam origens de codigo vivo quando o contrato precisa rastrear runtime real. As origens semanticas suportadas sao:
|
|
350
|
-
|
|
351
|
-
- `ts`
|
|
352
|
-
- `py`
|
|
353
|
-
- `dart`
|
|
354
|
-
- `lua`
|
|
355
|
-
- `php`
|
|
356
|
-
- `cs`
|
|
357
|
-
- `java`
|
|
358
|
-
- `go`
|
|
359
|
-
- `rust`
|
|
360
|
-
- `cpp`
|
|
361
|
-
|
|
362
|
-
Exemplo com Lua:
|
|
363
|
-
|
|
364
|
-
```sema
|
|
365
|
-
module app.runtime {
|
|
366
|
-
use lua src.runtime
|
|
367
|
-
|
|
368
|
-
task processar_snapshot {
|
|
369
|
-
input {
|
|
370
|
-
payload: Json required
|
|
371
|
-
}
|
|
372
|
-
output {
|
|
373
|
-
resultado: Json
|
|
374
|
-
}
|
|
375
|
-
impl {
|
|
376
|
-
lua: src.runtime.RuntimeBridge.processSnapshot
|
|
377
|
-
}
|
|
378
|
-
guarantees {
|
|
379
|
-
resultado existe
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
Para Lua, o `drift` resolve funcoes declaradas como `function nome(...)`, `local function nome(...)`, `function Tabela.metodo(...)`, `function Tabela:metodo(...)` e atribuicoes `Tabela.metodo = function(...)`. A forma com `:` e normalizada para ponto no contrato.
|
|
386
|
-
|
|
387
|
-
Exemplo com PHP:
|
|
388
|
-
|
|
389
|
-
```sema
|
|
390
|
-
module app.php {
|
|
391
|
-
use php App.Http.Controllers.UserController
|
|
392
|
-
|
|
393
|
-
task criar_usuario {
|
|
394
|
-
input {
|
|
395
|
-
payload: Json required
|
|
396
|
-
}
|
|
397
|
-
output {
|
|
398
|
-
resultado: Json
|
|
399
|
-
}
|
|
400
|
-
impl {
|
|
401
|
-
php: App.Http.Controllers.UserController.store
|
|
402
|
-
}
|
|
403
|
-
guarantees {
|
|
404
|
-
resultado existe
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
```
|
|
216
|
+
Isso existe para deixar explícito quando um contrato está pedindo de um banco algo que ele não entrega do mesmo jeito.
|
|
409
217
|
|
|
410
|
-
|
|
218
|
+
O mesmo principio vale para runtime de orquestração. Superfícies como `webhook`, `cron`, `worker`, `evento` e `fila` podem ser medidas contra famílias como `n8n`, mas o contrato continua canonicamente modelado em Sema, sem rebaixar a linguagem para a sintaxe do adapter alvo.
|
|
@@ -1,106 +1,105 @@
|
|
|
1
|
-
module exemplos.agendamento {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Agendamento de tarefas recorrentes e unicas com controle de execucao."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Agendamento {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
nome: Texto
|
|
10
|
-
tipo: Texto
|
|
11
|
-
expressao_cron: Texto
|
|
12
|
-
payload: Objeto
|
|
13
|
-
ativo: Booleano
|
|
14
|
-
ultima_execucao: Timestamp
|
|
15
|
-
proxima_execucao: Timestamp
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
entity ExecucaoAgendamento {
|
|
20
|
-
fields {
|
|
21
|
-
id: Id
|
|
22
|
-
agendamento_id: Id
|
|
23
|
-
status: Texto
|
|
24
|
-
iniciado_em: Timestamp
|
|
25
|
-
concluido_em: Timestamp
|
|
26
|
-
erro: Texto
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
task criar_agendamento {
|
|
31
|
-
input {
|
|
32
|
-
nome: Texto required
|
|
33
|
-
tipo: Texto required
|
|
34
|
-
expressao_cron: Texto required
|
|
35
|
-
payload: Objeto
|
|
36
|
-
}
|
|
37
|
-
output {
|
|
38
|
-
agendamento: Agendamento
|
|
39
|
-
}
|
|
40
|
-
rules {
|
|
41
|
-
nome deve_ser preenchido
|
|
42
|
-
expressao_cron deve_ser valida
|
|
43
|
-
tipo deve_ser registrado
|
|
44
|
-
}
|
|
45
|
-
effects {
|
|
46
|
-
persistencia Agendamento
|
|
47
|
-
evento agendamento_criado criticidade = baixa
|
|
48
|
-
auditoria criacao_agendamento
|
|
49
|
-
}
|
|
50
|
-
guarantees {
|
|
51
|
-
agendamento existe
|
|
52
|
-
agendamento.ativo == verdadeiro
|
|
53
|
-
}
|
|
54
|
-
error {
|
|
55
|
-
cron_invalido: "Expressao cron invalida."
|
|
56
|
-
tipo_nao_registrado: "Tipo de agendamento nao existe."
|
|
57
|
-
nome_duplicado: "Ja existe agendamento com este nome."
|
|
58
|
-
}
|
|
59
|
-
tests {
|
|
60
|
-
caso "cria agendamento diario" {
|
|
61
|
-
given { nome: "relatorio_diario" tipo: "gerar_relatorio" expressao_cron: "0 8 * * *" }
|
|
62
|
-
expect { sucesso: verdadeiro }
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
task executar_agendamento {
|
|
68
|
-
input {
|
|
69
|
-
agendamento_id: Id required
|
|
70
|
-
}
|
|
71
|
-
output {
|
|
72
|
-
execucao_id: Id
|
|
73
|
-
}
|
|
74
|
-
rules {
|
|
75
|
-
agendamento_id deve_ser valido
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
persistencia
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
EM_EXECUCAO ->
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
1
|
+
module exemplos.agendamento {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Agendamento de tarefas recorrentes e unicas com controle de execucao."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
entity Agendamento {
|
|
7
|
+
fields {
|
|
8
|
+
id: Id
|
|
9
|
+
nome: Texto
|
|
10
|
+
tipo: Texto
|
|
11
|
+
expressao_cron: Texto
|
|
12
|
+
payload: Objeto
|
|
13
|
+
ativo: Booleano
|
|
14
|
+
ultima_execucao: Timestamp
|
|
15
|
+
proxima_execucao: Timestamp
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
entity ExecucaoAgendamento {
|
|
20
|
+
fields {
|
|
21
|
+
id: Id
|
|
22
|
+
agendamento_id: Id
|
|
23
|
+
status: Texto
|
|
24
|
+
iniciado_em: Timestamp
|
|
25
|
+
concluido_em: Timestamp
|
|
26
|
+
erro: Texto
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
task criar_agendamento {
|
|
31
|
+
input {
|
|
32
|
+
nome: Texto required
|
|
33
|
+
tipo: Texto required
|
|
34
|
+
expressao_cron: Texto required
|
|
35
|
+
payload: Objeto
|
|
36
|
+
}
|
|
37
|
+
output {
|
|
38
|
+
agendamento: Agendamento
|
|
39
|
+
}
|
|
40
|
+
rules {
|
|
41
|
+
nome deve_ser preenchido
|
|
42
|
+
expressao_cron deve_ser valida
|
|
43
|
+
tipo deve_ser registrado
|
|
44
|
+
}
|
|
45
|
+
effects {
|
|
46
|
+
persistencia Agendamento
|
|
47
|
+
evento agendamento_criado criticidade = baixa
|
|
48
|
+
auditoria criacao_agendamento
|
|
49
|
+
}
|
|
50
|
+
guarantees {
|
|
51
|
+
agendamento existe
|
|
52
|
+
agendamento.ativo == verdadeiro
|
|
53
|
+
}
|
|
54
|
+
error {
|
|
55
|
+
cron_invalido: "Expressao cron invalida."
|
|
56
|
+
tipo_nao_registrado: "Tipo de agendamento nao existe."
|
|
57
|
+
nome_duplicado: "Ja existe agendamento com este nome."
|
|
58
|
+
}
|
|
59
|
+
tests {
|
|
60
|
+
caso "cria agendamento diario" {
|
|
61
|
+
given { nome: "relatorio_diario" tipo: "gerar_relatorio" expressao_cron: "0 8 * * *" }
|
|
62
|
+
expect { sucesso: verdadeiro }
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
task executar_agendamento {
|
|
68
|
+
input {
|
|
69
|
+
agendamento_id: Id required
|
|
70
|
+
}
|
|
71
|
+
output {
|
|
72
|
+
execucao_id: Id
|
|
73
|
+
}
|
|
74
|
+
rules {
|
|
75
|
+
agendamento_id deve_ser valido
|
|
76
|
+
}
|
|
77
|
+
effects {
|
|
78
|
+
consulta Agendamento por agendamento_id
|
|
79
|
+
persistencia ExecucaoAgendamento
|
|
80
|
+
persistencia Agendamento
|
|
81
|
+
evento agendamento_executado criticidade = baixa
|
|
82
|
+
auditoria execucao_agendamento
|
|
83
|
+
}
|
|
84
|
+
state ciclo_execucao {
|
|
85
|
+
transitions {
|
|
86
|
+
PENDENTE -> EM_EXECUCAO
|
|
87
|
+
EM_EXECUCAO -> CONCLUIDO
|
|
88
|
+
EM_EXECUCAO -> FALHOU
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
guarantees {
|
|
92
|
+
execucao_id existe
|
|
93
|
+
}
|
|
94
|
+
error {
|
|
95
|
+
agendamento_inativo: "Agendamento esta desativado."
|
|
96
|
+
execucao_em_andamento: "Ja existe uma execucao em andamento para este agendamento."
|
|
97
|
+
}
|
|
98
|
+
tests {
|
|
99
|
+
caso "executa agendamento ativo" {
|
|
100
|
+
given { agendamento_id: "agd_1" }
|
|
101
|
+
expect { sucesso: verdadeiro }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|