@semacode/cli 1.5.17 → 1.5.18
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 +104 -112
- package/SEMA_BRIEF.curto.txt +6 -6
- package/SEMA_BRIEF.md +17 -24
- package/SEMA_BRIEF.micro.txt +5 -5
- package/SEMA_INDEX.json +86 -224
- package/dist/drift.d.ts +3 -3
- package/dist/drift.js +5 -111
- 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 +59 -479
- package/dist/index.js.map +1 -1
- package/dist/projeto.js +0 -20
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +9 -8
- package/docs/cli.md +106 -119
- package/docs/como-ensinar-a-sema-para-ia.md +4 -4
- package/docs/env.md +56 -56
- package/docs/fluxo-pratico-ia-sema.md +171 -167
- package/docs/integracao-com-ia.md +98 -96
- package/docs/mcp.md +51 -53
- package/docs/pagamento-ponta-a-ponta.md +11 -1
- package/docs/persistencia-vendor-first.md +1 -1
- package/docs/prompt-base-ia-sema.md +6 -5
- package/docs/rollback.md +1 -1
- package/docs/sintaxe.md +196 -394
- package/exemplos/agendamento.sema +0 -1
- package/exemplos/assinatura.sema +0 -3
- package/exemplos/auditoria.sema +2 -1
- package/exemplos/estoque.sema +2 -1
- package/exemplos/fila.sema +2 -3
- package/exemplos/multi_tenant.sema +2 -2
- package/exemplos/notificacao.sema +53 -2
- package/exemplos/operacao_estrategia.sema +231 -0
- package/exemplos/pagamento.sema +214 -2
- package/exemplos/pedido.sema +156 -20
- package/exemplos/replica_analitica_erp.sema +160 -0
- package/exemplos/webhook.sema +2 -4
- 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/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- 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 +14 -42
- 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 +14 -14
|
@@ -5,12 +5,16 @@ Este documento descreve o vertical oficial de pagamento da Sema no fluxo publico
|
|
|
5
5
|
O objetivo nao e mostrar um exemplo fofo. O objetivo e demonstrar que a linguagem ja consegue modelar um fluxo de negocio real com:
|
|
6
6
|
|
|
7
7
|
- contrato publico
|
|
8
|
+
- seguranca e autorizacao
|
|
9
|
+
- classificacao de dados
|
|
10
|
+
- segredos e proibicoes explicitas
|
|
8
11
|
- regras
|
|
9
12
|
- efeitos operacionais
|
|
13
|
+
- execucao, idempotencia, retry e compensacao
|
|
10
14
|
- transicoes de estado
|
|
11
15
|
- orquestracao
|
|
12
16
|
- erros publicos
|
|
13
|
-
- testes executaveis
|
|
17
|
+
- testes executaveis com saida, status ou erro observavel
|
|
14
18
|
|
|
15
19
|
## Arquivos de referencia
|
|
16
20
|
|
|
@@ -62,12 +66,16 @@ E expoe:
|
|
|
62
66
|
|
|
63
67
|
A `task processar_pagamento` faz o trabalho central:
|
|
64
68
|
|
|
69
|
+
- exige `authz`
|
|
70
|
+
- classifica `dados`
|
|
71
|
+
- declara `segredos`, `audit` e `forbidden`
|
|
65
72
|
- valida entrada
|
|
66
73
|
- consulta o gateway
|
|
67
74
|
- persiste o pagamento
|
|
68
75
|
- emite evento
|
|
69
76
|
- notifica comprovante
|
|
70
77
|
- registra auditoria
|
|
78
|
+
- declara `execucao` com idempotencia, timeout, retry, compensacao e criticidade
|
|
71
79
|
- garante consistencia da saida
|
|
72
80
|
|
|
73
81
|
### Estado e transicoes
|
|
@@ -146,9 +154,11 @@ sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamen
|
|
|
146
154
|
Se esse vertical passa, a Sema ja consegue demonstrar que:
|
|
147
155
|
|
|
148
156
|
- modela contrato publico
|
|
157
|
+
- modela superficie sensivel sem deixar seguranca invisivel
|
|
149
158
|
- modela efeitos operacionais
|
|
150
159
|
- modela falhas reais
|
|
151
160
|
- modulariza dominio com `use`
|
|
161
|
+
- declara idempotencia e execucao critica sem criar sintaxe nova
|
|
152
162
|
- gera artefatos coerentes para TypeScript e Python
|
|
153
163
|
- executa testes gerados sem gambiarra conceitual
|
|
154
164
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Persistencia Vendor-First
|
|
2
2
|
|
|
3
|
-
Sema 1.5.
|
|
3
|
+
Sema 1.5.18 trata banco como superficie semantica de primeira classe. Isso significa assumir diferencas reais entre engines e coloca-las no contrato, no semantico, na IR, no drift, no impact map, na renomeacao assistida, no `verificar` e na extensao. Nesta linha, o `drift` tambem materializa persistencia local real em `Preferences`, `localStorage` e `sessionStorage` quando a task esta ancorada no arquivo que usa essas APIs, preservando o framing IA-first da release atual.
|
|
4
4
|
|
|
5
5
|
## Engines publicas
|
|
6
6
|
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
|
|
4
4
|
|
|
5
|
-
O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema nao foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA.
|
|
5
|
+
O objetivo nao e fazer a IA "improvisar bonito". O objetivo e fazer a IA operar a linguagem com previsibilidade. A Sema nao foi desenhada para ergonomia humana como prioridade; ela foi desenhada para IA. Humanos escrevem, revisam e aprovam; o consumidor primario e o agente.
|
|
6
6
|
|
|
7
7
|
## Prompt-base
|
|
8
8
|
|
|
9
9
|
Use o texto abaixo como base:
|
|
10
10
|
|
|
11
11
|
```text
|
|
12
|
-
Voce esta trabalhando com Sema, um
|
|
12
|
+
Voce esta trabalhando com Sema, um contrato semantico IA-first para agentes operarem software vivo.
|
|
13
13
|
|
|
14
|
-
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e
|
|
14
|
+
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
15
|
|
|
16
|
-
Trate a Sema como
|
|
16
|
+
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
17
|
|
|
18
18
|
Fontes de verdade, em ordem:
|
|
19
19
|
1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele
|
|
@@ -31,6 +31,7 @@ Regras de operacao:
|
|
|
31
31
|
- use o formatador oficial da Sema como fonte unica de estilo
|
|
32
32
|
- use diagnosticos estruturados como contrato de correcao
|
|
33
33
|
- use a IR como fonte de verdade semantica quando houver duvida
|
|
34
|
+
- use `predicadoCanonico` como normalizacao opcional; preserve o `predicado` original
|
|
34
35
|
- nao conclua uma alteracao sem validar e verificar o modulo
|
|
35
36
|
- trate `importar` como bootstrap revisavel, nao como contrato final automatico
|
|
36
37
|
- trate `drift` como medicao de verdade contra codigo vivo
|
|
@@ -58,7 +59,7 @@ Se algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao impr
|
|
|
58
59
|
Se voce quiser um prompt menor para uso frequente:
|
|
59
60
|
|
|
60
61
|
```text
|
|
61
|
-
Trabalhe com Sema como
|
|
62
|
+
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
63
|
```
|
|
63
64
|
|
|
64
65
|
Se voce quiser um prompt ainda mais curto e pronto para colar, use:
|
package/docs/rollback.md
CHANGED
|
@@ -20,7 +20,7 @@ npm dist-tag add @semacode/mcp@<versao-boa> latest
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
3. Se o problema for so VSIX ou asset de release, substitua o asset no GitHub Release ou publique uma release patch.
|
|
23
|
-
4. Prefira publicar patch corretivo (`1.5.
|
|
23
|
+
4. Prefira publicar patch corretivo (`1.5.18`, por exemplo) quando o pacote ja saiu para usuarios.
|
|
24
24
|
|
|
25
25
|
## Validacao de rollback
|
|
26
26
|
|
package/docs/sintaxe.md
CHANGED
|
@@ -1,410 +1,212 @@
|
|
|
1
|
-
# Sintaxe Canonica
|
|
2
|
-
|
|
3
|
-
A Sema usa blocos declarativos previsiveis para reduzir ambiguidade no parser, na IR, no drift e no contexto de IA.
|
|
4
|
-
|
|
5
|
-
## Regras basicas
|
|
6
|
-
|
|
7
|
-
- um arquivo `.sema` contem um `module` principal
|
|
8
|
-
- cada bloco abre com palavra-chave e fecha com `}`
|
|
9
|
-
- campos usam `nome: valor`
|
|
10
|
-
- blocos declarativos podem aparecer aninhados quando o contrato exigir
|
|
11
|
-
- `tests` usa blocos `caso`
|
|
1
|
+
# Sintaxe Canonica
|
|
2
|
+
|
|
3
|
+
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
|
+
|
|
5
|
+
## Regras basicas
|
|
6
|
+
|
|
7
|
+
- um arquivo `.sema` contem um `module` principal
|
|
8
|
+
- cada bloco abre com palavra-chave e fecha com `}`
|
|
9
|
+
- campos usam `nome: valor`
|
|
10
|
+
- blocos declarativos podem aparecer aninhados quando o contrato exigir
|
|
11
|
+
- `tests` usa blocos `caso`
|
|
12
|
+
|
|
13
|
+
## Blocos de primeira classe
|
|
14
|
+
|
|
15
|
+
- `module`
|
|
16
|
+
- `use`
|
|
17
|
+
- `database`
|
|
18
|
+
- `type`
|
|
19
|
+
- `entity`
|
|
20
|
+
- `enum`
|
|
21
|
+
- `state`
|
|
22
|
+
- `task`
|
|
23
|
+
- `flow`
|
|
24
|
+
- `route`
|
|
25
|
+
- `worker`
|
|
26
|
+
- `evento`
|
|
27
|
+
- `fila`
|
|
28
|
+
- `cron`
|
|
29
|
+
- `webhook`
|
|
30
|
+
- `cache`
|
|
31
|
+
- `storage`
|
|
32
|
+
- `policy`
|
|
33
|
+
- `tests`
|
|
34
|
+
- `docs`
|
|
35
|
+
- `comments`
|
|
36
|
+
|
|
37
|
+
## Subblocos comuns
|
|
38
|
+
|
|
39
|
+
- `input`
|
|
40
|
+
- `output`
|
|
41
|
+
- `rules`
|
|
42
|
+
- `effects`
|
|
43
|
+
- `auth`
|
|
44
|
+
- `authz`
|
|
45
|
+
- `dados`
|
|
46
|
+
- `audit`
|
|
47
|
+
- `segredos`
|
|
48
|
+
- `forbidden`
|
|
49
|
+
- `impl`
|
|
50
|
+
- `vinculos`
|
|
51
|
+
- `execucao`
|
|
52
|
+
- `guarantees`
|
|
53
|
+
- `error`
|
|
54
|
+
- `fields`
|
|
55
|
+
- `invariants`
|
|
56
|
+
- `transitions`
|
|
57
|
+
- `given`
|
|
58
|
+
- `when`
|
|
59
|
+
- `expect`
|
|
12
60
|
|
|
13
|
-
##
|
|
61
|
+
## Tipos primitivos
|
|
14
62
|
|
|
15
|
-
|
|
16
|
-
- `use`
|
|
17
|
-
- `database`
|
|
18
|
-
- `type`
|
|
19
|
-
- `entity`
|
|
20
|
-
- `enum`
|
|
21
|
-
- `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
|
-
- `task`
|
|
44
|
-
- `flow`
|
|
45
|
-
- `route`
|
|
46
|
-
- `worker`
|
|
47
|
-
- `evento`
|
|
48
|
-
- `fila`
|
|
49
|
-
- `cron`
|
|
50
|
-
- `webhook`
|
|
51
|
-
- `cache`
|
|
52
|
-
- `storage`
|
|
53
|
-
- `policy`
|
|
54
|
-
- `tests`
|
|
55
|
-
- `docs`
|
|
56
|
-
- `comments`
|
|
63
|
+
Tipos primitivos reconhecidos diretamente:
|
|
57
64
|
|
|
58
|
-
|
|
65
|
+
- `Texto`
|
|
66
|
+
- `Numero`
|
|
67
|
+
- `Inteiro`
|
|
68
|
+
- `Decimal`
|
|
69
|
+
- `Booleano`
|
|
70
|
+
- `Data`
|
|
71
|
+
- `Timestamp`
|
|
72
|
+
- `Objeto`
|
|
73
|
+
- `Id`
|
|
74
|
+
- `Email`
|
|
75
|
+
- `Json`
|
|
59
76
|
|
|
60
|
-
|
|
61
|
-
- `output`
|
|
62
|
-
- `rules`
|
|
63
|
-
- `effects`
|
|
64
|
-
- `auth`
|
|
65
|
-
- `authz`
|
|
66
|
-
- `dados`
|
|
67
|
-
- `audit`
|
|
68
|
-
- `segredos`
|
|
69
|
-
- `forbidden`
|
|
70
|
-
- `impl`
|
|
71
|
-
- `vinculos`
|
|
72
|
-
- `execucao`
|
|
73
|
-
- `guarantees`
|
|
74
|
-
- `error`
|
|
75
|
-
- `fields`
|
|
76
|
-
- `invariants`
|
|
77
|
-
- `transitions`
|
|
78
|
-
- `given`
|
|
79
|
-
- `when`
|
|
80
|
-
- `expect`
|
|
77
|
+
`Timestamp` e `Objeto` funcionam como aliases primitivos suportados e preservam o texto original na IR.
|
|
81
78
|
|
|
82
79
|
## Tipos compostos
|
|
83
|
-
|
|
84
|
-
```sema
|
|
85
|
-
input {
|
|
86
|
-
ids: Lista<Id> required
|
|
87
|
-
metadata: Mapa<Texto, Texto>
|
|
88
|
-
responsavel: Opcional<Usuario>
|
|
89
|
-
chave_publica: Texto|Id
|
|
90
|
-
}
|
|
91
|
-
```
|
|
92
|
-
|
|
80
|
+
|
|
81
|
+
```sema
|
|
82
|
+
input {
|
|
83
|
+
ids: Lista<Id> required
|
|
84
|
+
metadata: Mapa<Texto, Texto>
|
|
85
|
+
responsavel: Opcional<Usuario>
|
|
86
|
+
chave_publica: Texto|Id
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
93
90
|
Formas suportadas:
|
|
94
|
-
|
|
95
|
-
- `Lista<T>`
|
|
96
|
-
- `Mapa<K, V>`
|
|
97
|
-
- `Opcional<T>`
|
|
98
|
-
- `T1|T2`
|
|
91
|
+
|
|
92
|
+
- `Lista<T>`
|
|
93
|
+
- `Mapa<K, V>`
|
|
94
|
+
- `Opcional<T>`
|
|
95
|
+
- `T1|T2`
|
|
99
96
|
- `T?`
|
|
100
97
|
|
|
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:
|
|
106
|
-
|
|
107
|
-
- `book` ou `work`: obra inteira
|
|
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
|
|
112
|
-
|
|
113
|
-
`style_rule` aceita subblocos livres como `proibido`, `evitar`, `ecos`, `preferir`, `require` e `tolerancia`. Isso cobre frases cliches, muletas, ecos repetidos e limites de repeticao sem prender a linguagem a um genero literario.
|
|
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`.
|
|
118
|
-
|
|
119
|
-
```sema
|
|
120
|
-
module livro.tecnico.ia {
|
|
121
|
-
work protocolo_ia {
|
|
122
|
-
titulo: "Sistemas para IA"
|
|
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
|
-
}
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
`agent` e bloco de primeira classe. Um agent precisa declarar ao menos `role`/`goal`, `tools` e `policy`; `memory` gera aviso quando ausente, porque agente sem memoria declarada tende a improvisar contexto.
|
|
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
|
-
}
|
|
207
|
-
|
|
208
|
-
style_rule linguagem_respeitosa {
|
|
209
|
-
proibido {
|
|
210
|
-
generalizacao: "todo autista"
|
|
211
|
-
infantilizacao: "anjinho especial"
|
|
212
|
-
promessa: "cura garantida"
|
|
213
|
-
}
|
|
214
|
-
evitar {
|
|
215
|
-
frase: "superar o autismo"
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
agent checador_sensibilidade {
|
|
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.
|
|
249
|
-
|
|
250
|
-
Estrutura base:
|
|
251
|
-
|
|
252
|
-
```sema
|
|
253
|
-
database principal_postgres {
|
|
254
|
-
engine: postgres
|
|
255
|
-
consistency: forte
|
|
256
|
-
durability: alta
|
|
257
|
-
transaction_model: mvcc
|
|
258
|
-
query_model: sql
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
Recursos canonicamente suportados:
|
|
263
|
-
|
|
264
|
-
- `table`
|
|
265
|
-
- `index`
|
|
266
|
-
- `relationship`
|
|
267
|
-
- `query`
|
|
268
|
-
- `retention`
|
|
269
|
-
- `lock`
|
|
270
|
-
- `replication`
|
|
271
|
-
- `collection`
|
|
272
|
-
- `document`
|
|
273
|
-
- `keyspace`
|
|
274
|
-
- `stream`
|
|
275
|
-
- `capabilities`
|
|
276
|
-
|
|
277
|
-
Exemplo relacional:
|
|
278
|
-
|
|
279
|
-
```sema
|
|
280
|
-
database principal_postgres {
|
|
281
|
-
engine: postgres
|
|
282
|
-
schema: public
|
|
283
|
-
capabilities {
|
|
284
|
-
joins
|
|
285
|
-
views
|
|
286
|
-
foreign_keys
|
|
287
|
-
}
|
|
288
|
-
table pedidos {
|
|
289
|
-
entity: Pedido
|
|
290
|
-
}
|
|
291
|
-
relationship pedido_cliente {
|
|
292
|
-
from: Pedido
|
|
293
|
-
to: Cliente
|
|
294
|
-
}
|
|
295
|
-
query buscar_pedidos {
|
|
296
|
-
mode: sql
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
Exemplo documental:
|
|
302
|
-
|
|
303
|
-
```sema
|
|
304
|
-
database principal_mongodb {
|
|
305
|
-
engine: mongodb
|
|
306
|
-
query_model: documento
|
|
307
|
-
collection pedidos {
|
|
308
|
-
collection: pedidos
|
|
309
|
-
}
|
|
310
|
-
document pedido_snapshot {
|
|
311
|
-
entity: PedidoSnapshot
|
|
312
|
-
}
|
|
313
|
-
query pipeline_pedido {
|
|
314
|
-
mode: pipeline
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
Exemplo key-value:
|
|
320
|
-
|
|
321
|
-
```sema
|
|
322
|
-
database principal_redis {
|
|
323
|
-
engine: redis
|
|
324
|
-
query_model: chave_valor
|
|
325
|
-
keyspace cache_pedidos {
|
|
326
|
-
ttl: "300s"
|
|
327
|
-
}
|
|
328
|
-
stream eventos_pedido {
|
|
329
|
-
surface: fila
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
## Compatibilidade declarada
|
|
335
|
-
|
|
336
|
-
O IR de persistencia calcula compatibilidade por recurso com quatro estados:
|
|
337
|
-
|
|
338
|
-
- `nativo`
|
|
339
|
-
- `adaptado`
|
|
340
|
-
- `parcial`
|
|
341
|
-
- `invalido`
|
|
342
|
-
|
|
343
|
-
Isso existe para deixar explicito quando um contrato esta pedindo de um banco algo que ele nao entrega do mesmo jeito.
|
|
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.
|
|
98
|
+
## Predicados normalizados
|
|
346
99
|
|
|
347
|
-
|
|
100
|
+
Predicados escritos em contrato preservam o texto original em `predicado`. Quando a CLI reconhece uma forma comum, a expressao estruturada pode expor tambem `predicadoCanonico`.
|
|
348
101
|
|
|
349
|
-
|
|
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:
|
|
102
|
+
Exemplo:
|
|
388
103
|
|
|
389
104
|
```sema
|
|
390
|
-
|
|
391
|
-
|
|
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
|
-
}
|
|
105
|
+
rules {
|
|
106
|
+
email deve_ser email_valido
|
|
107
|
+
nome deve_ser preenchido
|
|
407
108
|
}
|
|
408
109
|
```
|
|
409
110
|
|
|
410
|
-
|
|
111
|
+
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, nao muda a sintaxe publica.
|
|
112
|
+
|
|
113
|
+
## Persistencia vendor-first
|
|
114
|
+
|
|
115
|
+
O bloco `database` modela banco e recursos persistidos sem apagar as diferencas entre engines.
|
|
116
|
+
|
|
117
|
+
Estrutura base:
|
|
118
|
+
|
|
119
|
+
```sema
|
|
120
|
+
database principal_postgres {
|
|
121
|
+
engine: postgres
|
|
122
|
+
consistency: forte
|
|
123
|
+
durability: alta
|
|
124
|
+
transaction_model: mvcc
|
|
125
|
+
query_model: sql
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Recursos canonicamente suportados:
|
|
130
|
+
|
|
131
|
+
- `table`
|
|
132
|
+
- `index`
|
|
133
|
+
- `relationship`
|
|
134
|
+
- `query`
|
|
135
|
+
- `retention`
|
|
136
|
+
- `lock`
|
|
137
|
+
- `replication`
|
|
138
|
+
- `collection`
|
|
139
|
+
- `document`
|
|
140
|
+
- `keyspace`
|
|
141
|
+
- `stream`
|
|
142
|
+
- `capabilities`
|
|
143
|
+
|
|
144
|
+
Exemplo relacional:
|
|
145
|
+
|
|
146
|
+
```sema
|
|
147
|
+
database principal_postgres {
|
|
148
|
+
engine: postgres
|
|
149
|
+
schema: public
|
|
150
|
+
capabilities {
|
|
151
|
+
joins
|
|
152
|
+
views
|
|
153
|
+
foreign_keys
|
|
154
|
+
}
|
|
155
|
+
table pedidos {
|
|
156
|
+
entity: Pedido
|
|
157
|
+
}
|
|
158
|
+
relationship pedido_cliente {
|
|
159
|
+
from: Pedido
|
|
160
|
+
to: Cliente
|
|
161
|
+
}
|
|
162
|
+
query buscar_pedidos {
|
|
163
|
+
mode: sql
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Exemplo documental:
|
|
169
|
+
|
|
170
|
+
```sema
|
|
171
|
+
database principal_mongodb {
|
|
172
|
+
engine: mongodb
|
|
173
|
+
query_model: documento
|
|
174
|
+
collection pedidos {
|
|
175
|
+
collection: pedidos
|
|
176
|
+
}
|
|
177
|
+
document pedido_snapshot {
|
|
178
|
+
entity: PedidoSnapshot
|
|
179
|
+
}
|
|
180
|
+
query pipeline_pedido {
|
|
181
|
+
mode: pipeline
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Exemplo key-value:
|
|
187
|
+
|
|
188
|
+
```sema
|
|
189
|
+
database principal_redis {
|
|
190
|
+
engine: redis
|
|
191
|
+
query_model: chave_valor
|
|
192
|
+
keyspace cache_pedidos {
|
|
193
|
+
ttl: "300s"
|
|
194
|
+
}
|
|
195
|
+
stream eventos_pedido {
|
|
196
|
+
surface: fila
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Compatibilidade declarada
|
|
202
|
+
|
|
203
|
+
O IR de persistencia calcula compatibilidade por recurso com quatro estados:
|
|
204
|
+
|
|
205
|
+
- `nativo`
|
|
206
|
+
- `adaptado`
|
|
207
|
+
- `parcial`
|
|
208
|
+
- `invalido`
|
|
209
|
+
|
|
210
|
+
Isso existe para deixar explicito quando um contrato esta pedindo de um banco algo que ele nao entrega do mesmo jeito.
|
|
211
|
+
|
|
212
|
+
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.
|