@semacode/cli 0.8.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -3
- package/dist/drift.d.ts +30 -1
- package/dist/drift.js +373 -17
- package/dist/drift.js.map +1 -1
- package/dist/index.js +828 -53
- package/dist/index.js.map +1 -1
- package/docs/AGENT_STARTER.md +10 -4
- package/docs/como-ensinar-a-sema-para-ia.md +17 -11
- package/docs/fluxo-pratico-ia-sema.md +42 -38
- package/docs/instalacao-e-primeiro-uso.md +189 -0
- package/docs/integracao-com-ia.md +228 -0
- package/docs/pagamento-ponta-a-ponta.md +155 -0
- package/docs/prompt-base-ia-sema.md +10 -3
- package/docs/sintaxe.md +267 -0
- package/exemplos/automacao.sema +107 -0
- package/exemplos/cadastro_usuario.sema +54 -0
- package/exemplos/calculadora.sema +78 -0
- package/exemplos/crud_simples.sema +89 -0
- package/exemplos/operacao_estrategia.sema +402 -0
- package/exemplos/pagamento.sema +222 -0
- package/exemplos/pagamento_dominio.sema +35 -0
- package/exemplos/testes_embutidos.sema +45 -0
- package/exemplos/tratamento_erro.sema +157 -0
- package/node_modules/@sema/gerador-dart/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 +14 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js +131 -22
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +546 -102
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +83 -5
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js +1 -1
- package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +10 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +230 -19
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +269 -10
- package/node_modules/@sema/nucleo/dist/semantico/analisador.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 +7 -6
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Instalacao e Primeiro Uso
|
|
2
|
+
|
|
3
|
+
Este guia mostra o caminho mais curto para testar a Sema do jeito certo, sem misturar fluxo de usuario com gambiarra de contribuinte.
|
|
4
|
+
|
|
5
|
+
## Requisitos
|
|
6
|
+
|
|
7
|
+
- Node.js instalado
|
|
8
|
+
- npm funcionando
|
|
9
|
+
- Python 3 e `pytest` se voce quiser rodar o fluxo completo de testes Python gerados
|
|
10
|
+
|
|
11
|
+
O repositorio so e necessario se voce quiser contribuir na Sema, rodar o showcase oficial localmente ou empacotar release.
|
|
12
|
+
|
|
13
|
+
## Caminho oficial
|
|
14
|
+
|
|
15
|
+
Instalacao via npm:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @semacode/cli
|
|
19
|
+
sema --help
|
|
20
|
+
sema doctor
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Se preferir o tarball oficial da GitHub Release:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install -g https://github.com/gerlanss/Sema/releases/latest/download/sema-cli-latest.tgz
|
|
27
|
+
sema --help
|
|
28
|
+
sema doctor
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Instalacao local ao projeto:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm install @semacode/cli
|
|
35
|
+
npx sema --help
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Instaladores auxiliares para a linha publica atual:
|
|
39
|
+
|
|
40
|
+
- Linux/macOS: `curl -fsSL https://raw.githubusercontent.com/gerlanss/Sema/v1.0.0/install-sema.sh | bash`
|
|
41
|
+
- Windows PowerShell: `irm https://raw.githubusercontent.com/gerlanss/Sema/v1.0.0/install-sema.ps1 | iex`
|
|
42
|
+
|
|
43
|
+
Se voce quiser reproducao estrita, prefira o npm registry ou o tarball da GitHub Release.
|
|
44
|
+
|
|
45
|
+
## Primeiro teste sem clonar o repo
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
mkdir sema-demo
|
|
49
|
+
cd sema-demo
|
|
50
|
+
sema iniciar
|
|
51
|
+
sema validar contratos/pedidos.sema --json
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Primeiro fluxo util
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
sema validar contratos/pedidos.sema --json
|
|
58
|
+
sema ast contratos/pedidos.sema --json
|
|
59
|
+
sema ir contratos/pedidos.sema --json
|
|
60
|
+
sema formatar contratos/pedidos.sema
|
|
61
|
+
sema verificar contratos --saida ./.tmp/verificacao
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Primeiro fluxo de IA real
|
|
65
|
+
|
|
66
|
+
Sem clonar o repo, o fluxo que mais mostra a proposta da Sema hoje e:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
sema inspecionar . --json
|
|
70
|
+
sema resumo contratos/pedidos.sema --micro --para mudanca
|
|
71
|
+
sema drift contratos/pedidos.sema --json
|
|
72
|
+
sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto-pedidos --json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Esse fluxo mostra:
|
|
76
|
+
|
|
77
|
+
- base de projeto resolvida
|
|
78
|
+
- cartao semantico curto para IA pequena ou gratuita
|
|
79
|
+
- codigo vivo detectado
|
|
80
|
+
- `impl` e `vinculos` resolvidos
|
|
81
|
+
- score, confianca e lacunas do `drift`
|
|
82
|
+
- `briefing.min.json` e `briefing.json` para IA antes da edicao
|
|
83
|
+
|
|
84
|
+
## `sema.config.json`
|
|
85
|
+
|
|
86
|
+
Exemplo de configuracao para projeto real:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"origens": ["./contratos"],
|
|
91
|
+
"saida": "./generated",
|
|
92
|
+
"alvos": ["typescript", "python"],
|
|
93
|
+
"alvoPadrao": "typescript",
|
|
94
|
+
"estruturaSaida": "backend",
|
|
95
|
+
"framework": "nestjs",
|
|
96
|
+
"modoEstrito": true,
|
|
97
|
+
"diretoriosSaidaPorAlvo": {
|
|
98
|
+
"typescript": "./generated/nestjs",
|
|
99
|
+
"python": "./generated/fastapi"
|
|
100
|
+
},
|
|
101
|
+
"convencoesGeracaoPorProjeto": "backend"
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Gerar codigo
|
|
106
|
+
|
|
107
|
+
Scaffold base:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
sema compilar contratos/pedidos.sema --alvo typescript --saida ./saida/typescript
|
|
111
|
+
sema compilar contratos/pedidos.sema --alvo python --saida ./saida/python
|
|
112
|
+
sema compilar contratos/pedidos.sema --alvo dart --saida ./saida/dart
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Scaffold backend:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
sema compilar contratos/pedidos.sema --alvo typescript --framework nestjs --estrutura backend --saida ./generated/nestjs
|
|
119
|
+
sema compilar contratos/pedidos.sema --alvo python --framework fastapi --estrutura backend --saida ./generated/fastapi
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Extensao VS Code
|
|
123
|
+
|
|
124
|
+
Empacotar:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
npm run extensao:empacotar
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Instalar localmente:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
npm run extensao:instalar-local
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Ou manualmente:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
code --install-extension .tmp/editor-vscode/sema-language-tools-1.0.0.vsix --force
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Caminho de contribuinte
|
|
143
|
+
|
|
144
|
+
Se o objetivo for desenvolver a propria Sema:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npm install
|
|
148
|
+
npm run build
|
|
149
|
+
npm run cli:instalar-local
|
|
150
|
+
sema validar exemplos/calculadora.sema
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Se quiser validar tudo de cara:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npm run project:check
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## `npm link` continua existindo
|
|
160
|
+
|
|
161
|
+
Esse fluxo continua util, mas e trilha de contribuinte:
|
|
162
|
+
|
|
163
|
+
```powershell
|
|
164
|
+
npm run cli:instalar-local
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Serve para:
|
|
168
|
+
|
|
169
|
+
- testar a experiencia de terminal no proprio ambiente
|
|
170
|
+
- desenvolver a CLI
|
|
171
|
+
- usar `sema` como interface principal mesmo durante o desenvolvimento local
|
|
172
|
+
|
|
173
|
+
Para remover:
|
|
174
|
+
|
|
175
|
+
```powershell
|
|
176
|
+
npm run cli:desinstalar-local
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Resumo honesto
|
|
180
|
+
|
|
181
|
+
Hoje o jeito certo de testar a Sema e:
|
|
182
|
+
|
|
183
|
+
1. instalar a CLI pelo npm ou pela GitHub Release
|
|
184
|
+
2. rodar `sema iniciar`
|
|
185
|
+
3. validar `contratos/pedidos.sema`
|
|
186
|
+
4. usar `inspecionar -> resumo -> drift -> contexto-ia` quando o projeto for vivo
|
|
187
|
+
5. ler `briefing.min.json` ou `briefing.json` antes de mandar a IA sair cavando arquivo
|
|
188
|
+
|
|
189
|
+
Clone + build + `npm link` continua bom para oficina, nao para landing page publica.
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Integracao com IA
|
|
2
|
+
|
|
3
|
+
A Sema foi desenhada para IA editar backend vivo com menos chute. O ponto nao e "a IA gera tudo"; o ponto e deixar contrato, vinculo e contexto operacional estruturados o bastante para a IA nao trabalhar igual um bicho tonto. Leitura humana continua possivel, mas nao e o centro do desenho.
|
|
4
|
+
|
|
5
|
+
## Moldura correta
|
|
6
|
+
|
|
7
|
+
Se uma IA tratar a Sema como enfeite declarativo, ela vai usar mal. A moldura certa e esta:
|
|
8
|
+
|
|
9
|
+
- `impl` liga intencao a simbolo executavel
|
|
10
|
+
- `vinculos` ligam contrato a arquivo, simbolo, recurso e superficie real
|
|
11
|
+
- `execucao` explicita timeout, retry, compensacao e criticidade
|
|
12
|
+
- `drift` mede verdade contra codigo vivo
|
|
13
|
+
- `contexto-ia` empacota briefing operacional antes da edicao
|
|
14
|
+
|
|
15
|
+
Em resumo: a Sema nao serve para a IA adivinhar melhor. Ela serve para a IA precisar adivinhar menos.
|
|
16
|
+
|
|
17
|
+
## Fluxo recomendado
|
|
18
|
+
|
|
19
|
+
Quando o trabalho cair em projeto vivo, o fluxo canonico agora e:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sema inspecionar . --json
|
|
23
|
+
sema resumo contratos/modulo.sema --micro --para mudanca
|
|
24
|
+
sema drift contratos/modulo.sema --json
|
|
25
|
+
sema contexto-ia contratos/modulo.sema --saida ./.tmp/contexto --json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Leitura rapida:
|
|
29
|
+
|
|
30
|
+
1. `inspecionar` descobre base do projeto, diretorios de codigo, fontes legado e modulos relevantes.
|
|
31
|
+
2. `resumo` entrega o menor cartao semantico util para a IA atual.
|
|
32
|
+
3. `drift` mede impls, vinculos, rotas, recursos, score semantico e confianca.
|
|
33
|
+
4. `contexto-ia` gera o pacote que a IA deveria ler antes de editar.
|
|
34
|
+
|
|
35
|
+
## Capacidade da IA
|
|
36
|
+
|
|
37
|
+
A Sema agora assume explicitamente que nem toda IA aguenta o pacote completo.
|
|
38
|
+
|
|
39
|
+
- IA pequena ou gratuita: comece em `resumo.micro.txt`, `briefing.min.json` e `prompt-curto.txt`
|
|
40
|
+
- IA media: suba para `resumo.curto.txt`, `briefing.min.json` e `drift.json`
|
|
41
|
+
- IA grande ou com tool use: leia `README.md`, `resumo.md`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
|
|
42
|
+
|
|
43
|
+
Se voce joga `ast.json` inteiro em modelo pequeno e depois reclama da resposta, foi voce que fez cagada operacional.
|
|
44
|
+
|
|
45
|
+
## O que a IA deve consumir
|
|
46
|
+
|
|
47
|
+
No minimo, para IA pequena:
|
|
48
|
+
|
|
49
|
+
- `resumo.micro.txt`
|
|
50
|
+
- `briefing.min.json`
|
|
51
|
+
|
|
52
|
+
No minimo, para IA media:
|
|
53
|
+
|
|
54
|
+
- `resumo.curto.txt`
|
|
55
|
+
- `briefing.min.json`
|
|
56
|
+
- `drift.json`
|
|
57
|
+
|
|
58
|
+
No minimo, para IA grande:
|
|
59
|
+
|
|
60
|
+
- `ir.json`
|
|
61
|
+
- `drift.json`
|
|
62
|
+
- `briefing.json`
|
|
63
|
+
- o proprio contrato `.sema`
|
|
64
|
+
|
|
65
|
+
O `briefing.json` agora e a peca mais operacional do pacote. Ele responde perguntas que agente serio precisa responder antes de mexer em codigo:
|
|
66
|
+
|
|
67
|
+
- o que tocar
|
|
68
|
+
- o que validar
|
|
69
|
+
- o que esta frouxo
|
|
70
|
+
- o que foi inferido
|
|
71
|
+
- quais simbolos estao relacionados
|
|
72
|
+
- quais superficies publicas podem ser afetadas
|
|
73
|
+
- quais testes minimos rodar
|
|
74
|
+
|
|
75
|
+
## Saida relevante do pacote `contexto-ia`
|
|
76
|
+
|
|
77
|
+
Hoje o pacote pode incluir:
|
|
78
|
+
|
|
79
|
+
- `resumo.micro.txt`
|
|
80
|
+
- `resumo.curto.txt`
|
|
81
|
+
- `resumo.md`
|
|
82
|
+
- `briefing.min.json`
|
|
83
|
+
- `prompt-curto.txt`
|
|
84
|
+
- `ast.json`
|
|
85
|
+
- `ir.json`
|
|
86
|
+
- `diagnosticos.json`
|
|
87
|
+
- `drift.json`
|
|
88
|
+
- `briefing.json`
|
|
89
|
+
- `README.md`
|
|
90
|
+
- `impl.<origem>.txt` quando existir implementacao vinculada
|
|
91
|
+
|
|
92
|
+
## Score, confianca e risco
|
|
93
|
+
|
|
94
|
+
`drift`, `inspecionar` e `contexto-ia` passam a expor sinais que ajudam a IA a nao tratar rascunho como verdade absoluta:
|
|
95
|
+
|
|
96
|
+
- `scoreSemantico`
|
|
97
|
+
- `confiancaVinculo`
|
|
98
|
+
- `riscoOperacional`
|
|
99
|
+
- `lacunas`
|
|
100
|
+
- `vinculos_validos`
|
|
101
|
+
- `vinculos_quebrados`
|
|
102
|
+
|
|
103
|
+
Leitura pratica:
|
|
104
|
+
|
|
105
|
+
- score alto + confianca alta: a IA pode editar com trilha boa
|
|
106
|
+
- score medio: ainda precisa ler contrato e conferir codigo vivo
|
|
107
|
+
- vinculo quebrado: a IA deve reduzir ousadia e consertar rastreabilidade antes de refatorar igual doida
|
|
108
|
+
|
|
109
|
+
## Superficies que a IA pode esperar
|
|
110
|
+
|
|
111
|
+
A linguagem agora trata estas bordas como primeira classe:
|
|
112
|
+
|
|
113
|
+
- `route`
|
|
114
|
+
- `worker`
|
|
115
|
+
- `evento`
|
|
116
|
+
- `fila`
|
|
117
|
+
- `cron`
|
|
118
|
+
- `webhook`
|
|
119
|
+
- `cache`
|
|
120
|
+
- `storage`
|
|
121
|
+
- `policy`
|
|
122
|
+
|
|
123
|
+
Isso importa porque backend real nao vive so de HTTP. Se a IA vai editar stack viva, ela precisa enxergar job, evento, webhook e recurso assincrono como parte do contrato, nao como sobra esquecida no runtime.
|
|
124
|
+
|
|
125
|
+
## Contrato operacional
|
|
126
|
+
|
|
127
|
+
Dentro de `task` e superficies, a IA deve prestar atencao em:
|
|
128
|
+
|
|
129
|
+
- `input`
|
|
130
|
+
- `output`
|
|
131
|
+
- `effects`
|
|
132
|
+
- `impl`
|
|
133
|
+
- `vinculos`
|
|
134
|
+
- `execucao`
|
|
135
|
+
- `guarantees`
|
|
136
|
+
- `error`
|
|
137
|
+
|
|
138
|
+
Exemplo minimo:
|
|
139
|
+
|
|
140
|
+
```sema
|
|
141
|
+
task medir_drift {
|
|
142
|
+
input {
|
|
143
|
+
contrato: Texto required
|
|
144
|
+
}
|
|
145
|
+
output {
|
|
146
|
+
score: Decimal
|
|
147
|
+
}
|
|
148
|
+
impl {
|
|
149
|
+
ts: cli.src.drift.analisarDriftLegado
|
|
150
|
+
}
|
|
151
|
+
vinculos {
|
|
152
|
+
arquivo: "pacotes/cli/src/drift.ts"
|
|
153
|
+
simbolo: cli.src.drift.analisarDriftLegado
|
|
154
|
+
}
|
|
155
|
+
execucao {
|
|
156
|
+
timeout: "30s"
|
|
157
|
+
retry: "3x exponencial"
|
|
158
|
+
criticidade_operacional: alta
|
|
159
|
+
}
|
|
160
|
+
guarantees {
|
|
161
|
+
score existe
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Comandos que agente serio nao deveria ignorar
|
|
167
|
+
|
|
168
|
+
- `sema ast arquivo.sema --json`
|
|
169
|
+
- `sema ir arquivo.sema --json`
|
|
170
|
+
- `sema validar arquivo.sema --json`
|
|
171
|
+
- `sema diagnosticos arquivo.sema --json`
|
|
172
|
+
- `sema formatar arquivo.sema`
|
|
173
|
+
- `sema inspecionar [arquivo-ou-pasta] --json`
|
|
174
|
+
- `sema drift [arquivo-ou-pasta] --json`
|
|
175
|
+
- `sema contexto-ia arquivo.sema [--saida <diretorio>] --json`
|
|
176
|
+
- `sema verificar [arquivo-ou-pasta] --json`
|
|
177
|
+
|
|
178
|
+
## Fluxos comuns
|
|
179
|
+
|
|
180
|
+
Quando a tarefa for so modelagem:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
sema ast contratos/pedidos.sema --json
|
|
184
|
+
sema ir contratos/pedidos.sema --json
|
|
185
|
+
sema formatar contratos/pedidos.sema
|
|
186
|
+
sema validar contratos/pedidos.sema --json
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Quando a tarefa envolver codigo derivado:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
sema inspecionar . --json
|
|
193
|
+
sema drift contratos/pedidos.sema --json
|
|
194
|
+
sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto-pedidos --json
|
|
195
|
+
sema compilar contratos/pedidos.sema --alvo typescript --framework nestjs --estrutura backend --saida ./generated/nestjs
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Quando a tarefa nasce num legado:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
sema importar flask ./backend-flask --saida ./sema/importado --json
|
|
202
|
+
sema formatar ./sema/importado
|
|
203
|
+
sema validar ./sema/importado --json
|
|
204
|
+
sema drift ./sema/importado --json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Showcase oficial do repo
|
|
208
|
+
|
|
209
|
+
Se voce estiver no monorepo da Sema, o showcase [showcases/ranking-showroom](../showcases/ranking-showroom/) continua sendo a melhor vitrine do fluxo completo:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
cd showcases/ranking-showroom
|
|
213
|
+
sema inspecionar . --json
|
|
214
|
+
sema drift contratos/ranking_showroom.sema --json
|
|
215
|
+
sema contexto-ia contratos/ranking_showroom.sema --saida ./.tmp/contexto-ranking --json
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
O valor aqui nao e so "validou". O valor e sair com score, confianca, drift e briefing suficientes para editar o backend Flask real sem sair cavando arquivo a esmo.
|
|
219
|
+
|
|
220
|
+
## Fechamento operacional
|
|
221
|
+
|
|
222
|
+
Quando a IA terminar a mudanca fora do monorepo:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
sema formatar contratos/modulo.sema
|
|
226
|
+
sema validar contratos/modulo.sema --json
|
|
227
|
+
sema verificar contratos --json --saida ./.tmp/verificacao-final
|
|
228
|
+
```
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Pagamento Ponta a Ponta na Sema
|
|
2
|
+
|
|
3
|
+
Este documento descreve o vertical oficial de pagamento da Sema no fluxo publico atual.
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
- contrato publico
|
|
8
|
+
- regras
|
|
9
|
+
- efeitos operacionais
|
|
10
|
+
- transicoes de estado
|
|
11
|
+
- orquestracao
|
|
12
|
+
- erros publicos
|
|
13
|
+
- testes executaveis
|
|
14
|
+
|
|
15
|
+
## Arquivos de referencia
|
|
16
|
+
|
|
17
|
+
- `exemplos/pagamento_dominio.sema`
|
|
18
|
+
- `exemplos/pagamento.sema`
|
|
19
|
+
|
|
20
|
+
## Como o vertical foi dividido
|
|
21
|
+
|
|
22
|
+
### `exemplos.pagamento.dominio`
|
|
23
|
+
|
|
24
|
+
Centraliza os contratos compartilhados:
|
|
25
|
+
|
|
26
|
+
- `entity Pagamento`
|
|
27
|
+
- `enum StatusPagamento`
|
|
28
|
+
- `state ciclo_pagamento`
|
|
29
|
+
|
|
30
|
+
### `exemplos.pagamento`
|
|
31
|
+
|
|
32
|
+
Centraliza a operacao do vertical:
|
|
33
|
+
|
|
34
|
+
- `task processar_pagamento`
|
|
35
|
+
- `task confirmar_pagamento`
|
|
36
|
+
- `task notificar_falha_pagamento`
|
|
37
|
+
- `task registrar_timeout_pagamento`
|
|
38
|
+
- `flow orquestracao_pagamento`
|
|
39
|
+
- `route processar_pagamento_publico`
|
|
40
|
+
|
|
41
|
+
## Narrativa do caso
|
|
42
|
+
|
|
43
|
+
### Entrada publica
|
|
44
|
+
|
|
45
|
+
A operacao entra por:
|
|
46
|
+
|
|
47
|
+
- `route processar_pagamento_publico`
|
|
48
|
+
|
|
49
|
+
Esse contrato publica:
|
|
50
|
+
|
|
51
|
+
- `pagamento_id`
|
|
52
|
+
- `valor`
|
|
53
|
+
- `token`
|
|
54
|
+
|
|
55
|
+
E expoe:
|
|
56
|
+
|
|
57
|
+
- `pagamento`
|
|
58
|
+
- `status`
|
|
59
|
+
- erros publicos coerentes com a `task`
|
|
60
|
+
|
|
61
|
+
### Task interna
|
|
62
|
+
|
|
63
|
+
A `task processar_pagamento` faz o trabalho central:
|
|
64
|
+
|
|
65
|
+
- valida entrada
|
|
66
|
+
- consulta o gateway
|
|
67
|
+
- persiste o pagamento
|
|
68
|
+
- emite evento
|
|
69
|
+
- notifica comprovante
|
|
70
|
+
- registra auditoria
|
|
71
|
+
- garante consistencia da saida
|
|
72
|
+
|
|
73
|
+
### Estado e transicoes
|
|
74
|
+
|
|
75
|
+
O `state ciclo_pagamento` ancora o contrato de transicao:
|
|
76
|
+
|
|
77
|
+
- `PENDENTE -> AUTORIZADO`
|
|
78
|
+
- `AUTORIZADO -> PROCESSADO`
|
|
79
|
+
- `PENDENTE -> RECUSADO`
|
|
80
|
+
|
|
81
|
+
A `task` explicita quais transicoes ela realmente usa.
|
|
82
|
+
|
|
83
|
+
### Flow de orquestracao
|
|
84
|
+
|
|
85
|
+
O `flow orquestracao_pagamento` demonstra:
|
|
86
|
+
|
|
87
|
+
- passagem de contexto
|
|
88
|
+
- confirmacao em caso de sucesso
|
|
89
|
+
- notificacao em caso de recusa
|
|
90
|
+
- registro de timeout em caso de indisponibilidade
|
|
91
|
+
- ramificacao por erro tipado
|
|
92
|
+
|
|
93
|
+
### Efeitos operacionais
|
|
94
|
+
|
|
95
|
+
O vertical usa as 5 categorias oficiais da Sema:
|
|
96
|
+
|
|
97
|
+
- `persistencia`
|
|
98
|
+
- `consulta`
|
|
99
|
+
- `evento`
|
|
100
|
+
- `notificacao`
|
|
101
|
+
- `auditoria`
|
|
102
|
+
|
|
103
|
+
Tambem usa `criticidade` para deixar claro o peso operacional do efeito.
|
|
104
|
+
|
|
105
|
+
### Falhas reais
|
|
106
|
+
|
|
107
|
+
O vertical cobre explicitamente:
|
|
108
|
+
|
|
109
|
+
- autorizacao negada
|
|
110
|
+
- saldo insuficiente
|
|
111
|
+
- timeout de gateway
|
|
112
|
+
|
|
113
|
+
## Fluxo de trabalho recomendado
|
|
114
|
+
|
|
115
|
+
### 1. Escrever ou ajustar os arquivos `.sema`
|
|
116
|
+
|
|
117
|
+
Use o dominio compartilhado em um modulo e a operacao em outro modulo.
|
|
118
|
+
|
|
119
|
+
### 2. Aplicar o formato canonico
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
sema formatar exemplos
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 3. Validar semanticamente
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
sema validar exemplos/pagamento.sema
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### 4. Gerar codigo
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
sema compilar exemplos/pagamento.sema --alvo typescript --saida ./.tmp/pagamento-ts
|
|
135
|
+
sema compilar exemplos/pagamento.sema --alvo python --saida ./.tmp/pagamento-py
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 5. Verificar o vertical completo
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
sema verificar exemplos/pagamento.sema --json --saida ./.tmp/verificacao-pagamento
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## O que esse vertical prova
|
|
145
|
+
|
|
146
|
+
Se esse vertical passa, a Sema ja consegue demonstrar que:
|
|
147
|
+
|
|
148
|
+
- modela contrato publico
|
|
149
|
+
- modela efeitos operacionais
|
|
150
|
+
- modela falhas reais
|
|
151
|
+
- modulariza dominio com `use`
|
|
152
|
+
- gera artefatos coerentes para TypeScript e Python
|
|
153
|
+
- executa testes gerados sem gambiarra conceitual
|
|
154
|
+
|
|
155
|
+
Esse e o criterio pratico que sustenta o uso publico do vertical de pagamento como referencia para IA e geracao.
|
|
@@ -2,7 +2,7 @@
|
|
|
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.
|
|
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.
|
|
6
6
|
|
|
7
7
|
## Prompt-base
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@ Use o texto abaixo como base:
|
|
|
11
11
|
```text
|
|
12
12
|
Voce esta trabalhando com Sema, um Protocolo de Governanca de Intencao para IA e backend vivo.
|
|
13
13
|
|
|
14
|
-
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack, nao para substituir arquitetura, design ou curadoria humana.
|
|
14
|
+
Tecnicamente, a Sema funciona como linguagem de intencao orientada a contrato. Operacionalmente, ela existe para governar semantica acima da stack e reduzir ambiguidade para IA, nao para substituir arquitetura, design ou curadoria humana.
|
|
15
15
|
|
|
16
16
|
Trate a Sema como linguagem de especificacao executavel e protocolo de governanca semantica. Nao invente sintaxe, palavras-chave ou blocos fora da gramatica e dos exemplos oficiais.
|
|
17
17
|
|
|
@@ -20,7 +20,8 @@ Fontes de verdade, em ordem:
|
|
|
20
20
|
2. gramatica e documentacao de sintaxe da Sema
|
|
21
21
|
3. especificacao semantica da linguagem
|
|
22
22
|
4. exemplos oficiais, com prioridade para o vertical de pagamento
|
|
23
|
-
5.
|
|
23
|
+
5. `sema resumo` e `briefing.min.json` quando a IA for pequena
|
|
24
|
+
6. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar
|
|
24
25
|
|
|
25
26
|
Regras de operacao:
|
|
26
27
|
- preserve o significado semantico
|
|
@@ -57,6 +58,12 @@ Se voce quiser um prompt menor para uso frequente:
|
|
|
57
58
|
Trabalhe com Sema como DSL semantica orientada a contrato. 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.
|
|
58
59
|
```
|
|
59
60
|
|
|
61
|
+
Se voce quiser um prompt ainda mais curto e pronto para colar, use:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
sema prompt-curto caminho/arquivo.sema --curto --para mudanca
|
|
65
|
+
```
|
|
66
|
+
|
|
60
67
|
## Variacao para revisao
|
|
61
68
|
|
|
62
69
|
Use esta versao quando a IA for revisar `.sema` em vez de criar:
|