@semacode/cli 1.3.6 → 1.4.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/AGENTS.md +272 -0
- package/LICENSE +22 -0
- package/README.md +93 -0
- package/SEMA_BRIEF.curto.txt +9 -0
- package/SEMA_BRIEF.md +49 -0
- package/SEMA_BRIEF.micro.txt +7 -0
- package/SEMA_INDEX.json +546 -0
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +532 -27
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +2 -0
- package/dist/importador.js +166 -7
- package/dist/importador.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/projeto.d.ts +6 -1
- package/dist/projeto.js +1 -3
- package/dist/projeto.js.map +1 -1
- package/dist/typescript-http.js +1 -1
- package/dist/typescript-http.js.map +1 -1
- package/docs/AGENT_STARTER.md +102 -0
- package/docs/cli.md +101 -0
- package/docs/como-ensinar-a-sema-para-ia.md +149 -0
- package/docs/fluxo-pratico-ia-sema.md +177 -0
- package/docs/instalacao-e-primeiro-uso.md +108 -0
- package/docs/integracao-com-ia.md +71 -0
- package/docs/pagamento-ponta-a-ponta.md +155 -0
- package/docs/persistencia-vendor-first.md +145 -0
- package/docs/prompt-base-ia-sema.md +104 -0
- package/docs/sintaxe.md +177 -0
- package/exemplos/agendamento.sema +106 -0
- package/exemplos/assinatura.sema +136 -0
- package/exemplos/auditoria.sema +88 -0
- package/exemplos/autenticacao.sema +125 -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/estoque.sema +126 -0
- package/exemplos/exportacao.sema +94 -0
- package/exemplos/fila.sema +131 -0
- package/exemplos/integracao_externa.sema +94 -0
- package/exemplos/multi_tenant.sema +140 -0
- package/exemplos/notificacao.sema +98 -0
- package/exemplos/operacao_estrategia.sema +402 -0
- package/exemplos/pagamento.sema +222 -0
- package/exemplos/pagamento_dominio.sema +35 -0
- package/exemplos/pedido.sema +119 -0
- package/exemplos/permissao.sema +121 -0
- package/exemplos/persistencia_vendor_first.sema +86 -0
- package/exemplos/relatorio.sema +93 -0
- package/exemplos/testes_embutidos.sema +45 -0
- package/exemplos/tratamento_erro.sema +157 -0
- package/exemplos/upload_arquivo.sema +93 -0
- package/exemplos/webhook.sema +96 -0
- package/llms-full.txt +34 -0
- package/llms.txt +17 -0
- package/logo.png +0 -0
- package/node_modules/@sema/gerador-css/package.json +3 -10
- package/node_modules/@sema/gerador-dart/package.json +3 -10
- package/node_modules/@sema/gerador-html/package.json +3 -10
- package/node_modules/@sema/gerador-javascript/package.json +3 -10
- package/node_modules/@sema/gerador-lua/package.json +3 -10
- package/node_modules/@sema/gerador-python/package.json +3 -10
- package/node_modules/@sema/gerador-typescript/package.json +3 -10
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js +32 -17
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/index.d.ts +1 -0
- package/node_modules/@sema/nucleo/dist/index.js +1 -0
- package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +94 -0
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +60 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +15 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +98 -3
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +39 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +294 -0
- package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -0
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +118 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +3 -6
- package/node_modules/@sema/padroes/package.json +3 -6
- package/package.json +33 -21
- package/node_modules/@sema/gerador-css/src/index.ts +0 -605
- package/node_modules/@sema/gerador-css/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-css/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-dart/src/index.ts +0 -52
- package/node_modules/@sema/gerador-dart/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-dart/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-html/src/index.ts +0 -185
- package/node_modules/@sema/gerador-html/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-html/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-javascript/src/index.ts +0 -461
- package/node_modules/@sema/gerador-javascript/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-javascript/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-lua/src/index.d.ts +0 -3
- package/node_modules/@sema/gerador-lua/src/index.js.map +0 -1
- package/node_modules/@sema/gerador-lua/src/index.ts +0 -359
- package/node_modules/@sema/gerador-lua/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-lua/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-python/src/index.ts +0 -706
- package/node_modules/@sema/gerador-python/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-python/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/gerador-typescript/src/index.ts +0 -728
- package/node_modules/@sema/gerador-typescript/tsconfig.json +0 -13
- package/node_modules/@sema/gerador-typescript/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/nucleo/src/ast/tipos.ts +0 -191
- package/node_modules/@sema/nucleo/src/diagnosticos/index.ts +0 -43
- package/node_modules/@sema/nucleo/src/formatador/index.ts +0 -507
- package/node_modules/@sema/nucleo/src/index.ts +0 -133
- package/node_modules/@sema/nucleo/src/ir/conversor.ts +0 -912
- package/node_modules/@sema/nucleo/src/ir/modelos.ts +0 -331
- package/node_modules/@sema/nucleo/src/lexer/lexer.ts +0 -166
- package/node_modules/@sema/nucleo/src/lexer/tokens.ts +0 -64
- package/node_modules/@sema/nucleo/src/parser/gramatica.ebnf +0 -39
- package/node_modules/@sema/nucleo/src/parser/parser.ts +0 -790
- package/node_modules/@sema/nucleo/src/semantico/analisador.ts +0 -2692
- package/node_modules/@sema/nucleo/src/semantico/estruturas.ts +0 -632
- package/node_modules/@sema/nucleo/src/semantico/seguranca.ts +0 -362
- package/node_modules/@sema/nucleo/src/util/arquivos.ts +0 -28
- package/node_modules/@sema/nucleo/tsconfig.json +0 -9
- package/node_modules/@sema/nucleo/tsconfig.tsbuildinfo +0 -1
- package/node_modules/@sema/padroes/src/index.ts +0 -251
- package/node_modules/@sema/padroes/tsconfig.json +0 -9
- package/node_modules/@sema/padroes/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Como Ensinar a Sema para IA
|
|
2
|
+
|
|
3
|
+
Este documento explica como fazer uma IA entender a Sema sem depender de memoria previa do modelo. A estrategia correta nao e presumir que a IA "ja conhece a linguagem", e sim entregar contexto suficiente para ela operar com seguranca.
|
|
4
|
+
|
|
5
|
+
Leia isso do ponto de vista da CLI publica. A IA nao deve assumir que esta dentro do monorepo da Sema, nem que precisa chamar `node pacotes/cli/dist/index.js`.
|
|
6
|
+
|
|
7
|
+
## Principio central
|
|
8
|
+
|
|
9
|
+
Uma IA entende uma linguagem nova quando recebe quatro camadas de contexto:
|
|
10
|
+
|
|
11
|
+
1. sintaxe
|
|
12
|
+
2. semantica
|
|
13
|
+
3. estrutura intermediaria estavel
|
|
14
|
+
4. exemplos reais
|
|
15
|
+
|
|
16
|
+
Sem essas quatro camadas, o modelo comeca a adivinhar. E adivinhacao em linguagem de contrato e pedir para nascer bug feio.
|
|
17
|
+
|
|
18
|
+
Antes de qualquer outra coisa, a IA tambem precisa receber a **moldura correta**:
|
|
19
|
+
|
|
20
|
+
- a Sema e um protocolo de governanca de intencao
|
|
21
|
+
- a Sema foi feita para IA, nao para ergonomia humana
|
|
22
|
+
- a Sema nao foi feita para "automatizar tudo"
|
|
23
|
+
- a Sema existe para explicitar, alinhar e verificar contrato contra sistema vivo
|
|
24
|
+
- curadoria humana continua parte da proposta
|
|
25
|
+
|
|
26
|
+
Se a IA errar essa moldura, ela vai cobrar da ferramenta a coisa errada e operar feito um animal apressado.
|
|
27
|
+
|
|
28
|
+
## Camada 1. Sintaxe
|
|
29
|
+
|
|
30
|
+
A IA precisa saber como a linguagem e escrita.
|
|
31
|
+
|
|
32
|
+
Fontes principais:
|
|
33
|
+
|
|
34
|
+
- [README.md](../README.md)
|
|
35
|
+
- [sintaxe.md](./sintaxe.md)
|
|
36
|
+
- [integracao-com-ia.md](./integracao-com-ia.md)
|
|
37
|
+
|
|
38
|
+
Objetivo dessa camada:
|
|
39
|
+
|
|
40
|
+
- reconhecer blocos validos
|
|
41
|
+
- entender delimitadores
|
|
42
|
+
- nao inventar palavras-chave
|
|
43
|
+
- respeitar a organizacao canonicamente formatada
|
|
44
|
+
|
|
45
|
+
## Camada 2. Semantica
|
|
46
|
+
|
|
47
|
+
Depois de saber ler, a IA precisa saber o que cada bloco significa.
|
|
48
|
+
|
|
49
|
+
Fontes principais:
|
|
50
|
+
|
|
51
|
+
- [README.md](../README.md)
|
|
52
|
+
- [integracao-com-ia.md](./integracao-com-ia.md)
|
|
53
|
+
- [pagamento-ponta-a-ponta.md](./pagamento-ponta-a-ponta.md)
|
|
54
|
+
|
|
55
|
+
Objetivo dessa camada:
|
|
56
|
+
|
|
57
|
+
- distinguir contrato interno de `task`
|
|
58
|
+
- distinguir contrato publico de `route`
|
|
59
|
+
- entender `effects`, `guarantees`, `error`, `state` e `flow`
|
|
60
|
+
- operar na linguagem como especificacao executavel, nao como texto decorativo
|
|
61
|
+
- entender que `importar` e bootstrap
|
|
62
|
+
- entender que `drift` e regua de coerencia contra o runtime
|
|
63
|
+
- entender que `impl` e ponte rastreavel para simbolo vivo
|
|
64
|
+
|
|
65
|
+
## Camada 3. Estrutura intermediaria estavel
|
|
66
|
+
|
|
67
|
+
Essa e a camada que faz a parada parar de ser um cassino.
|
|
68
|
+
|
|
69
|
+
Em vez de confiar que a IA vai interpretar `.sema` cru de primeira, use a CLI como tradutora oficial da linguagem.
|
|
70
|
+
|
|
71
|
+
Comandos principais:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
sema resumo arquivo.sema --micro --para onboarding
|
|
75
|
+
sema validar arquivo.sema --json
|
|
76
|
+
sema diagnosticos arquivo.sema --json
|
|
77
|
+
sema ast arquivo.sema --json
|
|
78
|
+
sema ir arquivo.sema --json
|
|
79
|
+
sema verificar arquivo-ou-pasta --json --saida ./.tmp/verificacao-ia
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Como cada comando ajuda:
|
|
83
|
+
|
|
84
|
+
- `resumo`: entrega cartao semantico pequeno para IA com janela curta
|
|
85
|
+
- `validar --json`: diz se a base esta semanticamente valida
|
|
86
|
+
- `diagnosticos --json`: devolve erros e avisos como contrato estruturado
|
|
87
|
+
- `ast --json`: mostra a forma sintatica escrita
|
|
88
|
+
- `ir --json`: mostra a forma semantica resolvida
|
|
89
|
+
- `verificar --json`: mostra o estado operacional do projeto
|
|
90
|
+
|
|
91
|
+
Se a IA puder consumir `ir --json`, melhor ainda. E ali que a linguagem fica menos ambigua e mais utilizavel para automacao. Mas nao seja um animal: para modelo pequeno, comece em `resumo` e `briefing.min.json`.
|
|
92
|
+
|
|
93
|
+
## Camada 4. Exemplos reais
|
|
94
|
+
|
|
95
|
+
Modelo aprende muito por padrao. Por isso, bons exemplos valem quase tanto quanto especificacao.
|
|
96
|
+
|
|
97
|
+
Arquivos recomendados:
|
|
98
|
+
|
|
99
|
+
- [pagamento.sema](../exemplos/pagamento.sema)
|
|
100
|
+
- [pagamento_dominio.sema](../exemplos/pagamento_dominio.sema)
|
|
101
|
+
- [automacao.sema](../exemplos/automacao.sema)
|
|
102
|
+
- [tratamento_erro.sema](../exemplos/tratamento_erro.sema)
|
|
103
|
+
- [crud_simples.sema](../exemplos/crud_simples.sema)
|
|
104
|
+
|
|
105
|
+
O vertical oficial de pagamento deve ser tratado como a referencia principal.
|
|
106
|
+
|
|
107
|
+
## O que a IA nao deve fazer
|
|
108
|
+
|
|
109
|
+
- inventar palavras-chave fora da gramatica
|
|
110
|
+
- introduzir blocos inexistentes
|
|
111
|
+
- assumir semantica que nao aparece na especificacao
|
|
112
|
+
- tratar draft importado como contrato final so porque veio da CLI
|
|
113
|
+
- tratar a Sema como gerador magico de sistema completo
|
|
114
|
+
- editar `.sema` sem rodar `sema formatar`
|
|
115
|
+
- encerrar alteracao sem consultar `diagnosticos` quando houver falha
|
|
116
|
+
|
|
117
|
+
## O que a IA deve fazer
|
|
118
|
+
|
|
119
|
+
- usar a gramatica e os exemplos como fonte de estilo
|
|
120
|
+
- usar a IR como fonte de verdade semantica sempre que possivel
|
|
121
|
+
- usar diagnosticos estruturados como guia de correcao
|
|
122
|
+
- rodar o formatador antes de considerar o trabalho pronto
|
|
123
|
+
- validar e verificar a mudanca no mesmo fluxo
|
|
124
|
+
|
|
125
|
+
## Estrategia recomendada
|
|
126
|
+
|
|
127
|
+
Se voce for instruir uma IA para trabalhar com Sema, entregue o contexto nesta ordem:
|
|
128
|
+
|
|
129
|
+
1. [README.md](../README.md)
|
|
130
|
+
2. [como-ensinar-a-sema-para-ia.md](./como-ensinar-a-sema-para-ia.md)
|
|
131
|
+
3. [pagamento-ponta-a-ponta.md](./pagamento-ponta-a-ponta.md)
|
|
132
|
+
4. [prompt-base-ia-sema.md](./prompt-base-ia-sema.md)
|
|
133
|
+
5. `sema resumo --micro` ou `sema resumo --curto`, conforme a capacidade da IA
|
|
134
|
+
6. `ast --json`, `ir --json` e `diagnosticos --json` do modulo alvo, se a capacidade aguentar
|
|
135
|
+
|
|
136
|
+
Essa ordem faz a IA ir de contexto geral para contexto operacional, em vez de cair direto num arquivo cru e sair chutando.
|
|
137
|
+
|
|
138
|
+
## Regra de ouro
|
|
139
|
+
|
|
140
|
+
A Sema foi desenhada para ser entendida por IA, mas isso nao significa que a IA vai adivinhar sozinha.
|
|
141
|
+
|
|
142
|
+
Ela entende bem quando recebe:
|
|
143
|
+
|
|
144
|
+
- especificacao
|
|
145
|
+
- exemplos
|
|
146
|
+
- JSON estrutural
|
|
147
|
+
- feedback automatico
|
|
148
|
+
|
|
149
|
+
Sem isso, ate o modelo mais caro vira estagiario emocionado.
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Fluxo Pratico para IA Antes de Editar `.sema`
|
|
2
|
+
|
|
3
|
+
Este documento descreve o fluxo operacional recomendado para qualquer IA antes, durante e depois de alterar arquivos `.sema`.
|
|
4
|
+
|
|
5
|
+
Se a IA seguir isso, ela trabalha com contexto. Se nao seguir, vira adivinhacao gourmet.
|
|
6
|
+
|
|
7
|
+
## Fluxo curto
|
|
8
|
+
|
|
9
|
+
1. ler contexto do projeto
|
|
10
|
+
2. identificar a capacidade da IA
|
|
11
|
+
3. identificar o modulo alvo
|
|
12
|
+
4. consultar o menor artefato semantico suficiente
|
|
13
|
+
5. editar
|
|
14
|
+
6. formatar
|
|
15
|
+
7. validar
|
|
16
|
+
8. verificar
|
|
17
|
+
|
|
18
|
+
## Fluxo detalhado
|
|
19
|
+
|
|
20
|
+
### Etapa 1. Ler contexto minimo
|
|
21
|
+
|
|
22
|
+
Antes de tocar em qualquer arquivo, a IA deve ler:
|
|
23
|
+
|
|
24
|
+
- [README.md](../README.md)
|
|
25
|
+
- [integracao-com-ia.md](./integracao-com-ia.md)
|
|
26
|
+
- [como-ensinar-a-sema-para-ia.md](./como-ensinar-a-sema-para-ia.md)
|
|
27
|
+
|
|
28
|
+
Se o trabalho estiver ligado a pagamento, ler tambem:
|
|
29
|
+
|
|
30
|
+
- [pagamento-ponta-a-ponta.md](./pagamento-ponta-a-ponta.md)
|
|
31
|
+
|
|
32
|
+
### Etapa 2. Escolher a faixa de capacidade
|
|
33
|
+
|
|
34
|
+
Antes de despejar contexto na IA, escolha o que ela aguenta:
|
|
35
|
+
|
|
36
|
+
- IA pequena ou gratuita: `sema resumo --micro` e `briefing.min.json`
|
|
37
|
+
- IA media: `sema resumo --curto`, `briefing.min.json` e `drift.json`
|
|
38
|
+
- IA grande: `contexto-ia`, `briefing.json`, `drift.json`, `ir.json` e `ast.json`
|
|
39
|
+
|
|
40
|
+
### Etapa 3. Ler o modulo alvo e um exemplo parecido
|
|
41
|
+
|
|
42
|
+
A IA deve identificar:
|
|
43
|
+
|
|
44
|
+
- qual arquivo sera editado
|
|
45
|
+
- qual modulo esse arquivo representa
|
|
46
|
+
- qual exemplo oficial mais se parece com o que precisa ser feito
|
|
47
|
+
|
|
48
|
+
Regra pratica:
|
|
49
|
+
|
|
50
|
+
- automacao: [automacao.sema](../exemplos/automacao.sema)
|
|
51
|
+
- erros e fluxos de falha: [tratamento_erro.sema](../exemplos/tratamento_erro.sema)
|
|
52
|
+
- borda publica e pagamento: [pagamento.sema](../exemplos/pagamento.sema)
|
|
53
|
+
|
|
54
|
+
### Etapa 4. Consultar AST e IR quando fizer sentido
|
|
55
|
+
|
|
56
|
+
Antes de alterar, a IA deve executar:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
sema resumo caminho/arquivo.sema --curto --para mudanca
|
|
60
|
+
sema ast caminho/arquivo.sema --json
|
|
61
|
+
sema ir caminho/arquivo.sema --json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Objetivo:
|
|
65
|
+
|
|
66
|
+
- ver a forma sintatica quando a capacidade aguentar
|
|
67
|
+
- ver a forma semantica resolvida quando a capacidade aguentar
|
|
68
|
+
- evitar interpretar errado o contrato
|
|
69
|
+
|
|
70
|
+
### Etapa 5. Editar o `.sema`
|
|
71
|
+
|
|
72
|
+
Ao editar, a IA deve:
|
|
73
|
+
|
|
74
|
+
- preservar a intencao do modulo
|
|
75
|
+
- seguir a gramatica existente
|
|
76
|
+
- evitar criar bloco ou operador nao suportado
|
|
77
|
+
- preferir a forma ja usada nos exemplos oficiais
|
|
78
|
+
|
|
79
|
+
### Etapa 6. Formatar
|
|
80
|
+
|
|
81
|
+
Depois da edicao:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
sema formatar caminho/arquivo.sema
|
|
85
|
+
sema formatar caminho/arquivo.sema --check
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Se `--check` falhar, o trabalho ainda nao esta pronto.
|
|
89
|
+
|
|
90
|
+
### Etapa 7. Validar e diagnosticar
|
|
91
|
+
|
|
92
|
+
Depois da formatacao:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
sema validar caminho/arquivo.sema --json
|
|
96
|
+
sema diagnosticos caminho/arquivo.sema --json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Se houver falha:
|
|
100
|
+
|
|
101
|
+
- usar os diagnosticos estruturados como contrato de correcao
|
|
102
|
+
- nao insistir em leitura manual teimosa quando a CLI ja disse onde esta a merda
|
|
103
|
+
|
|
104
|
+
### Etapa 7.5. Compilar quando a tarefa pedir codigo derivado
|
|
105
|
+
|
|
106
|
+
Se a tarefa nao for so editar contrato, mas tambem gerar base de implementacao, a IA deve rodar explicitamente:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
sema compilar caminho/arquivo.sema --alvo typescript --saida ./saida/typescript
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Ou trocar o alvo para `python` ou `dart`, conforme o caso.
|
|
113
|
+
|
|
114
|
+
Regra pratica:
|
|
115
|
+
|
|
116
|
+
- se a entrega inclui codigo derivado, `sema compilar` nao e opcional
|
|
117
|
+
- se a IA ignorar `compilar`, ela pode acabar reescrevendo na mao coisa que a Sema ja gera sozinha, que e burrice operacional
|
|
118
|
+
|
|
119
|
+
### Etapa 8. Verificar
|
|
120
|
+
|
|
121
|
+
No fechamento:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
sema verificar arquivo-ou-pasta --json --saida ./.tmp/verificacao-ia
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Fluxo minimo para automacao
|
|
128
|
+
|
|
129
|
+
Se voce quiser o menor fluxo aceitavel para uma IA pequena:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
sema resumo caminho/arquivo.sema --micro --para mudanca
|
|
133
|
+
sema formatar caminho/arquivo.sema
|
|
134
|
+
sema validar caminho/arquivo.sema --json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Mas, sendo sincero, o fluxo bom mesmo e fechar com `verificar`.
|
|
138
|
+
|
|
139
|
+
Se a tarefa envolver codigo derivado, o fluxo minimo aceitavel vira:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
sema ir caminho/arquivo.sema --json
|
|
143
|
+
sema formatar caminho/arquivo.sema
|
|
144
|
+
sema validar caminho/arquivo.sema --json
|
|
145
|
+
sema compilar caminho/arquivo.sema --alvo typescript --saida ./saida/typescript
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Checklist de saida
|
|
149
|
+
|
|
150
|
+
Antes de considerar a alteracao pronta, a IA deve responder mentalmente:
|
|
151
|
+
|
|
152
|
+
- eu entendi o modulo e o contrato?
|
|
153
|
+
- eu mantive a sintaxe dentro do que a linguagem suporta?
|
|
154
|
+
- eu formatei o arquivo?
|
|
155
|
+
- eu validei?
|
|
156
|
+
- eu olhei diagnosticos se algo falhou?
|
|
157
|
+
- eu fechei com verificacao?
|
|
158
|
+
|
|
159
|
+
Se alguma resposta for "nao", ainda nao terminou.
|
|
160
|
+
|
|
161
|
+
## Regra de ouro
|
|
162
|
+
|
|
163
|
+
Em Sema, a IA nao deveria operar no escuro.
|
|
164
|
+
|
|
165
|
+
Ela deve trabalhar sempre com:
|
|
166
|
+
|
|
167
|
+
- exemplo oficial
|
|
168
|
+
- AST
|
|
169
|
+
- IR
|
|
170
|
+
- diagnosticos
|
|
171
|
+
- formatador
|
|
172
|
+
|
|
173
|
+
Esse conjunto e o que faz a linguagem ser amigavel para IA de verdade, e nao so no discurso bonito.
|
|
174
|
+
|
|
175
|
+
## Observacao sobre caminhos
|
|
176
|
+
|
|
177
|
+
Esta documentacao usa placeholders de arquivo e pasta, nao caminhos do monorepo da Sema. A IA deve adaptar isso ao projeto atual e continuar tratando `sema` como interface publica principal.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# Instalacao e Primeiro Uso
|
|
2
|
+
|
|
3
|
+
Este guia cobre o caminho publico atual da Sema para CLI, MCP e extensao.
|
|
4
|
+
|
|
5
|
+
## Requisitos
|
|
6
|
+
|
|
7
|
+
- Node.js LTS
|
|
8
|
+
- npm funcional
|
|
9
|
+
- Python 3 so se voce quiser rodar testes Python gerados
|
|
10
|
+
|
|
11
|
+
## CLI
|
|
12
|
+
|
|
13
|
+
Instalacao principal:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @semacode/cli
|
|
17
|
+
sema --help
|
|
18
|
+
sema doctor
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Instalacao por release:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install -g https://github.com/gerlanss/Sema/releases/latest/download/sema-cli-latest.tgz
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Instalacao local ao projeto:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install @semacode/cli
|
|
31
|
+
npx sema --help
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## MCP
|
|
35
|
+
|
|
36
|
+
Se voce usa cliente MCP:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install -g @semacode/mcp
|
|
40
|
+
sema-mcp
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Ou sem instalar:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx -y @semacode/mcp
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Instaladores oficiais
|
|
50
|
+
|
|
51
|
+
Linux ou macOS:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
curl -fsSL https://raw.githubusercontent.com/gerlanss/Sema/v1.4.0/install-sema.sh | bash
|
|
55
|
+
curl -fsSL https://raw.githubusercontent.com/gerlanss/Sema/v1.4.0/install-sema.sh | bash -s -- --with-vscode --with-mcp
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Windows PowerShell:
|
|
59
|
+
|
|
60
|
+
```powershell
|
|
61
|
+
Invoke-WebRequest -Uri https://raw.githubusercontent.com/gerlanss/Sema/v1.4.0/install-sema.ps1 -OutFile install-sema.ps1
|
|
62
|
+
.\install-sema.ps1 -WithVSCode -WithMcp -Version 1.4.0
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Se quiser outra tag, troque `v1.4.0` pelo release desejado.
|
|
66
|
+
|
|
67
|
+
## Extensao VS Code
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
curl -L -o sema-language-tools.vsix https://github.com/gerlanss/Sema/releases/latest/download/sema-language-tools-latest.vsix
|
|
71
|
+
code --install-extension ./sema-language-tools.vsix --force
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Ou baixe a VSIX antes e instale localmente.
|
|
75
|
+
|
|
76
|
+
## Primeiro teste
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
mkdir sema-demo
|
|
80
|
+
cd sema-demo
|
|
81
|
+
sema iniciar
|
|
82
|
+
sema validar contratos/pedidos.sema --json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Primeiro fluxo util
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
sema validar contratos/pedidos.sema --json
|
|
89
|
+
sema ir contratos/pedidos.sema --json
|
|
90
|
+
sema formatar contratos/pedidos.sema
|
|
91
|
+
sema verificar contratos --saida ./.tmp/verificacao
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Primeiro fluxo IA-first
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
sema inspecionar . --json
|
|
98
|
+
sema resumo contratos/pedidos.sema --micro --para onboarding
|
|
99
|
+
sema drift contratos/pedidos.sema --json
|
|
100
|
+
sema contexto-ia contratos/pedidos.sema --saida ./.tmp/contexto --json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Primeiro fluxo de persistencia vendor-first
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
sema validar contratos/sema/persistencia_vendor_first.sema --json
|
|
107
|
+
sema ir contratos/sema/persistencia_vendor_first.sema --json
|
|
108
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Integracao com IA
|
|
2
|
+
|
|
3
|
+
Sema foi feita para IA operar software vivo com menos adivinhacao.
|
|
4
|
+
|
|
5
|
+
## Ordem recomendada
|
|
6
|
+
|
|
7
|
+
1. `sema inspecionar . --json`
|
|
8
|
+
2. `sema resumo <arquivo-ou-pasta> --micro --para onboarding`
|
|
9
|
+
3. `sema drift <arquivo-ou-pasta> --json`
|
|
10
|
+
4. `sema contexto-ia <arquivo.sema> --saida <diretorio> --json`
|
|
11
|
+
|
|
12
|
+
Nao comece cavando codigo bruto quando a ferramenta ja consegue te dar contrato, score, lacuna e superficie viva.
|
|
13
|
+
|
|
14
|
+
## Por capacidade do modelo
|
|
15
|
+
|
|
16
|
+
IA pequena:
|
|
17
|
+
|
|
18
|
+
- `sema resumo --micro`
|
|
19
|
+
- `briefing.min.json`
|
|
20
|
+
- `prompt-curto.txt`
|
|
21
|
+
|
|
22
|
+
IA media:
|
|
23
|
+
|
|
24
|
+
- `sema resumo --curto`
|
|
25
|
+
- `drift.json`
|
|
26
|
+
- `briefing.min.json`
|
|
27
|
+
|
|
28
|
+
IA grande:
|
|
29
|
+
|
|
30
|
+
- `sema contexto-ia`
|
|
31
|
+
- `briefing.json`
|
|
32
|
+
- `ir.json`
|
|
33
|
+
- `ast.json`
|
|
34
|
+
|
|
35
|
+
## MCP
|
|
36
|
+
|
|
37
|
+
Se o agente usa MCP:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npm install -g @semacode/cli @semacode/mcp
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Depois configure:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"mcpServers": {
|
|
48
|
+
"sema": {
|
|
49
|
+
"command": "npx",
|
|
50
|
+
"args": ["-y", "@semacode/mcp"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Regras praticas
|
|
57
|
+
|
|
58
|
+
- trate `.sema` e IR como fonte de verdade semantica
|
|
59
|
+
- trate `drift` como juiz da adocao incremental
|
|
60
|
+
- use `briefing.min.json` antes de abrir dezenas de arquivos
|
|
61
|
+
- nao invente sintaxe fora da gramatica oficial
|
|
62
|
+
- em persistencia, nao assuma que bancos diferentes tem o mesmo contrato operacional
|
|
63
|
+
|
|
64
|
+
## Arquivos uteis no repo
|
|
65
|
+
|
|
66
|
+
- `AGENTS.md`
|
|
67
|
+
- `llms.txt`
|
|
68
|
+
- `llms-full.txt`
|
|
69
|
+
- `SEMA_BRIEF.md`
|
|
70
|
+
- `SEMA_INDEX.json`
|
|
71
|
+
- `docs/persistencia-vendor-first.md`
|
|
@@ -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.
|