@semacode/cli 1.2.17 → 1.3.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.
Files changed (128) hide show
  1. package/README.md +2 -2
  2. package/dist/index.js +58 -10
  3. package/dist/projeto.js +4 -1
  4. package/package.json +17 -34
  5. package/src/cpp-symbols.ts +82 -0
  6. package/src/dotnet-http.ts +355 -0
  7. package/src/drift.ts +2455 -0
  8. package/src/go-http.ts +118 -0
  9. package/src/importador.ts +3448 -0
  10. package/src/index.ts +4470 -0
  11. package/src/java-http.ts +247 -0
  12. package/src/projeto.ts +810 -0
  13. package/src/python-http.ts +258 -0
  14. package/src/rust-http.ts +125 -0
  15. package/src/tipos.ts +22 -0
  16. package/src/typescript-http.ts +1076 -0
  17. package/tsconfig.json +20 -0
  18. package/AGENTS.md +0 -50
  19. package/LICENSE +0 -22
  20. package/SEMA_BRIEF.curto.txt +0 -9
  21. package/SEMA_BRIEF.md +0 -49
  22. package/SEMA_BRIEF.micro.txt +0 -7
  23. package/SEMA_INDEX.json +0 -546
  24. package/dist/cpp-symbols.d.ts +0 -10
  25. package/dist/cpp-symbols.js.map +0 -1
  26. package/dist/dotnet-http.d.ts +0 -23
  27. package/dist/dotnet-http.js.map +0 -1
  28. package/dist/drift.d.ts +0 -118
  29. package/dist/drift.js.map +0 -1
  30. package/dist/go-http.d.ts +0 -23
  31. package/dist/go-http.js.map +0 -1
  32. package/dist/importador.d.ts +0 -29
  33. package/dist/importador.js.map +0 -1
  34. package/dist/index.d.ts +0 -2
  35. package/dist/index.js.map +0 -1
  36. package/dist/java-http.d.ts +0 -23
  37. package/dist/java-http.js.map +0 -1
  38. package/dist/lua-symbols.d.ts +0 -8
  39. package/dist/lua-symbols.js.map +0 -1
  40. package/dist/projeto.d.ts +0 -48
  41. package/dist/projeto.js.map +0 -1
  42. package/dist/python-http.d.ts +0 -23
  43. package/dist/python-http.js.map +0 -1
  44. package/dist/rust-http.d.ts +0 -23
  45. package/dist/rust-http.js.map +0 -1
  46. package/dist/tipos.d.ts +0 -3
  47. package/dist/tipos.js.map +0 -1
  48. package/dist/typescript-http.d.ts +0 -35
  49. package/dist/typescript-http.js.map +0 -1
  50. package/docs/AGENT_STARTER.md +0 -102
  51. package/docs/como-ensinar-a-sema-para-ia.md +0 -149
  52. package/docs/fluxo-pratico-ia-sema.md +0 -177
  53. package/docs/instalacao-e-primeiro-uso.md +0 -196
  54. package/docs/integracao-com-ia.md +0 -228
  55. package/docs/pagamento-ponta-a-ponta.md +0 -155
  56. package/docs/prompt-base-ia-sema.md +0 -104
  57. package/docs/sintaxe.md +0 -361
  58. package/exemplos/automacao.sema +0 -107
  59. package/exemplos/cadastro_usuario.sema +0 -54
  60. package/exemplos/calculadora.sema +0 -78
  61. package/exemplos/crud_simples.sema +0 -89
  62. package/exemplos/operacao_estrategia.sema +0 -402
  63. package/exemplos/pagamento.sema +0 -222
  64. package/exemplos/pagamento_dominio.sema +0 -35
  65. package/exemplos/testes_embutidos.sema +0 -45
  66. package/exemplos/tratamento_erro.sema +0 -157
  67. package/llms-full.txt +0 -34
  68. package/llms.txt +0 -17
  69. package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
  70. package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
  71. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  72. package/node_modules/@sema/gerador-dart/package.json +0 -7
  73. package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
  74. package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
  75. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  76. package/node_modules/@sema/gerador-lua/package.json +0 -7
  77. package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
  78. package/node_modules/@sema/gerador-python/dist/index.js +0 -628
  79. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  80. package/node_modules/@sema/gerador-python/package.json +0 -7
  81. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
  82. package/node_modules/@sema/gerador-typescript/dist/index.js +0 -656
  83. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  84. package/node_modules/@sema/gerador-typescript/package.json +0 -7
  85. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -122
  86. package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
  87. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  88. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
  89. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
  90. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  91. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
  92. package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -445
  93. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  94. package/node_modules/@sema/nucleo/dist/index.d.ts +0 -34
  95. package/node_modules/@sema/nucleo/dist/index.js +0 -95
  96. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  97. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
  98. package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -781
  99. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  100. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -285
  101. package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
  102. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  103. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
  104. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
  105. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  106. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
  107. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -46
  108. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  109. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
  110. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -656
  111. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  112. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -57
  113. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1497
  114. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  115. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
  116. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
  117. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  118. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
  119. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
  120. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  121. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
  122. package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
  123. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  124. package/node_modules/@sema/nucleo/package.json +0 -7
  125. package/node_modules/@sema/padroes/dist/index.d.ts +0 -21
  126. package/node_modules/@sema/padroes/dist/index.js +0 -159
  127. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
  128. package/node_modules/@sema/padroes/package.json +0 -7
@@ -1,155 +0,0 @@
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.
@@ -1,104 +0,0 @@
1
- # Prompt-Base Oficial para IA Trabalhar com Sema
2
-
3
- Este arquivo serve como prompt-base oficial para qualquer IA que precise ler, escrever, revisar ou transformar arquivos `.sema`.
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.
6
-
7
- ## Prompt-base
8
-
9
- Use o texto abaixo como base:
10
-
11
- ```text
12
- Voce esta trabalhando com Sema, um Protocolo de Governanca de Intencao para IA e backend vivo.
13
-
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
-
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
-
18
- Fontes de verdade, em ordem:
19
- 1. se o projeto expuser `SEMA_CONTEXT.md`, comece por ele
20
- 2. `SEMA_BRIEF.md`
21
- 3. `SEMA_INDEX.json`
22
- 4. README do projeto
23
- 5. gramatica e documentacao de sintaxe da Sema
24
- 6. especificacao semantica da linguagem
25
- 7. exemplos oficiais, com prioridade para o vertical de pagamento
26
- 8. `sema resumo` e `briefing.min.json` quando a IA for pequena
27
- 9. AST, IR e diagnosticos exportados pela CLI em JSON quando a capacidade aguentar
28
-
29
- Regras de operacao:
30
- - preserve o significado semantico
31
- - use o formatador oficial da Sema como fonte unica de estilo
32
- - use diagnosticos estruturados como contrato de correcao
33
- - use a IR como fonte de verdade semantica quando houver duvida
34
- - nao conclua uma alteracao sem validar e verificar o modulo
35
- - trate `importar` como bootstrap revisavel, nao como contrato final automatico
36
- - trate `drift` como medicao de verdade contra codigo vivo
37
- - trate `impl` como ponte entre task e simbolo real
38
- - nao invente regra de negocio que o contrato e o codigo nao sustentem
39
-
40
- Antes de editar `.sema`, entenda:
41
- - o module alvo
42
- - os contratos de task, route, error, effects, guarantees, state e flow
43
- - os exemplos oficiais relacionados
44
-
45
- Depois de editar `.sema`, execute este fluxo:
46
- 1. formatar
47
- 2. validar
48
- 3. diagnosticar, se houver falha
49
- 4. verificar
50
-
51
- Se houver conflito entre texto livre e IR/diagnosticos, priorize a IR e os diagnosticos da CLI.
52
-
53
- Se algo nao estiver claro, siga a forma ja usada nos exemplos oficiais. Nao improvise sem base.
54
- ```
55
-
56
- ## Variacao curta
57
-
58
- Se voce quiser um prompt menor para uso frequente:
59
-
60
- ```text
61
- 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.
62
- ```
63
-
64
- Se voce quiser um prompt ainda mais curto e pronto para colar, use:
65
-
66
- ```bash
67
- sema prompt-curto caminho/arquivo.sema --curto --para mudanca
68
- ```
69
-
70
- ## Variacao para revisao
71
-
72
- Use esta versao quando a IA for revisar `.sema` em vez de criar:
73
-
74
- ```text
75
- 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.
76
- ```
77
-
78
- ## Variacao para geracao
79
-
80
- Use esta versao quando a IA for escrever modulo novo:
81
-
82
- ```text
83
- 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
- ```
85
-
86
- ## Variacao para correcao guiada por diagnostico
87
-
88
- Use esta versao quando a IA ja tiver erro concreto para corrigir:
89
-
90
- ```text
91
- 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.
92
- ```
93
-
94
- ## O que sempre anexar junto do prompt
95
-
96
- Idealmente, acompanhe o prompt com:
97
-
98
- - o arquivo `.sema` alvo
99
- - o resultado de `sema ast --json`
100
- - o resultado de `sema ir --json`
101
- - o resultado de `sema diagnosticos --json`, se houver erro
102
- - um exemplo oficial parecido
103
-
104
- Sem isso, a IA pode ate acertar. Com isso, ela trabalha direito.
package/docs/sintaxe.md DELETED
@@ -1,361 +0,0 @@
1
- # Sintaxe Canonica
2
-
3
- A Sema usa blocos declarativos com chaves e forma previsivel. A regra aqui nao e "ficar bonitinho para humano"; e reduzir ambiguidade para parser, IR, drift e 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
- - linhas declarativas continuam validas para regra, efeito, garantia, transicao e etapa de flow
11
- - `tests` contem blocos `caso`
12
- - quando uma palavra reservada aparece seguida de `:`, ela continua sendo campo, nao bloco
13
-
14
- ## Blocos de primeira classe
15
-
16
- - `module`
17
- - `use`
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 mais usados
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`
60
-
61
- ## Tipos compostos
62
-
63
- A Sema agora aceita formas canonicas para payload mais denso sem empurrar tudo para `Json`.
64
-
65
- ```sema
66
- input {
67
- ids: Lista<Id> required
68
- metadata: Mapa<Texto, Texto>
69
- responsavel: Opcional<Usuario>
70
- chave_publica: Texto|Id
71
- }
72
- ```
73
-
74
- Formas suportadas:
75
-
76
- - `Lista<T>`
77
- - `Mapa<K, V>`
78
- - `Opcional<T>`
79
- - `T1|T2`
80
- - `T?`
81
-
82
- ## Task com contrato operacional
83
-
84
- ```sema
85
- task processar_pedido {
86
- input {
87
- pedido_id: Id required
88
- itens: Lista<Texto> required
89
- }
90
- output {
91
- protocolo: Id
92
- status: Texto
93
- }
94
- impl {
95
- ts: app.pedidos.processar
96
- }
97
- vinculos {
98
- arquivo: "src/pedidos/processar.ts"
99
- simbolo: app.pedidos.processar
100
- fila: pedidos_processamento
101
- }
102
- execucao {
103
- idempotencia: verdadeiro
104
- timeout: "30s"
105
- retry: "3x exponencial"
106
- compensacao: "reverter_reserva"
107
- criticidade_operacional: alta
108
- }
109
- effects {
110
- persistencia pedidos criticidade = alta
111
- auditoria pedidos criticidade = media
112
- }
113
- guarantees {
114
- protocolo existe
115
- status existe
116
- }
117
- error {
118
- pedido_invalido {
119
- mensagem: "payload invalido"
120
- categoria: dominio
121
- recuperabilidade: permanente
122
- acao_chamador: corrigir_input
123
- impacta_estado: falso
124
- requer_compensacao: falso
125
- }
126
- }
127
- tests {
128
- caso "processa pedido valido" {
129
- given {
130
- pedido_id: "ped_1"
131
- }
132
- expect {
133
- sucesso: verdadeiro
134
- }
135
- }
136
- }
137
- }
138
- ```
139
-
140
- ## `impl`
141
-
142
- `impl` liga a task ou a superficie ao simbolo real do runtime.
143
-
144
- ```sema
145
- impl {
146
- ts: app.pedidos.processar
147
- py: services.orders.processar
148
- cs: Pedidos.Api.Controllers.PedidosController.Processar
149
- }
150
- ```
151
-
152
- Regras:
153
-
154
- - cada origem aparece no maximo uma vez por bloco
155
- - o caminho aponta para simbolo, nao para chamada com `()`
156
- - `ts|typescript`, `py|python`, `dart`, `cs|csharp|dotnet`, `java`, `go|golang`, `rust|rs`, `cpp|cxx|cc|c++` sao origens validas
157
-
158
- ## `vinculos`
159
-
160
- `vinculos` nao substitui `impl`. Ele complementa o contrato com rastros operacionais que ajudam IA e drift a mapear o sistema vivo.
161
-
162
- Campos comuns:
163
-
164
- - `arquivo`
165
- - `simbolo`
166
- - `rota`
167
- - `superficie`
168
- - `recurso`
169
- - `tabela`
170
- - `fila`
171
- - `worker`
172
- - `evento`
173
- - `cron`
174
- - `webhook`
175
- - `cache`
176
- - `storage`
177
- - `policy`
178
-
179
- Exemplo:
180
-
181
- ```sema
182
- vinculos {
183
- arquivo: "pacotes/cli/src/index.ts"
184
- simbolo: cli.src.index.gerarContextoIa
185
- webhook: "/interno/contexto-ia"
186
- }
187
- ```
188
-
189
- ## `execucao`
190
-
191
- `execucao` explicita comportamento operacional em vez de deixar isso espalhado pelo codigo ou pela cabeca da IA.
192
-
193
- ```sema
194
- execucao {
195
- idempotencia: verdadeiro
196
- timeout: "15s"
197
- retry: "fila"
198
- compensacao: "nenhuma"
199
- criticidade_operacional: media
200
- }
201
- ```
202
-
203
- Campos canonicos:
204
-
205
- - `idempotencia`
206
- - `timeout`
207
- - `retry`
208
- - `compensacao`
209
- - `criticidade_operacional`
210
-
211
- ## Seguranca semantica
212
-
213
- Em `task`, `route` e superficies modernas, a Sema agora aceita contratos de seguranca explicitos para reduzir adivinhacao em producao.
214
-
215
- - `auth`: como a chamada autentica, com `modo`, `estrategia`, `principal` e `origem`
216
- - `authz`: quem pode executar, com `papel`, `escopo`, `politica` e `tenant`
217
- - `dados`: classificacao de input/output, `redacao_log` e `retencao`
218
- - `audit`: trilha obrigatoria com `evento`, `ator`, `correlacao`, `retencao` e `motivo`
219
- - `segredos`: origem, escopo, rotacao e protecoes de segredo
220
- - `forbidden`: proibicoes explicitas como `shell.exec`, `network.egress`, `log.segredo` e `retorno.credencial`
221
-
222
- Exemplo:
223
-
224
- ```sema
225
- task processar_pagamento {
226
- input {
227
- cliente_id: Id required
228
- token_gateway: Texto required
229
- }
230
- output {
231
- protocolo: Id
232
- status: Texto
233
- }
234
- effects {
235
- db.write Pagamento criticidade=alta privilegio=escrita isolamento=tenant
236
- secret.read gateway_api_key criticidade=media privilegio=leitura isolamento=processo
237
- }
238
- auth {
239
- modo: interno
240
- estrategia: jwt
241
- principal: servico
242
- origem: worker
243
- }
244
- authz {
245
- papel: pagamentos_admin
246
- escopo: pagamentos.processar
247
- tenant: isolado
248
- }
249
- dados {
250
- classificacao_padrao: interno
251
- redacao_log: obrigatoria
252
- retencao: "90d"
253
- input {
254
- cliente_id: pii
255
- token_gateway: credencial
256
- }
257
- output {
258
- protocolo: interno
259
- status: interno
260
- }
261
- }
262
- audit {
263
- evento: pagamentos.processado
264
- ator: auth.servico
265
- correlacao: request_id
266
- retencao: "180d"
267
- motivo: obrigatorio
268
- }
269
- segredos {
270
- gateway_api_key {
271
- origem: vault
272
- escopo: runtime
273
- acesso: gateway_pagamento
274
- rotacao: "30d"
275
- nao_logar: verdadeiro
276
- nao_retornar: verdadeiro
277
- mascarar: verdadeiro
278
- }
279
- }
280
- forbidden {
281
- shell.exec
282
- retorno.credencial
283
- log.segredo
284
- }
285
- guarantees {
286
- protocolo existe
287
- status existe
288
- }
289
- }
290
- ```
291
-
292
- Esses blocos nao tentam implementar seguranca magica. Eles tornam a intencao auditavel por parser, IR, `drift`, `contexto-ia` e verificacao semantica.
293
-
294
- ## Superficies modernas
295
-
296
- A Sema nao fica presa em HTTP. As bordas abaixo sao blocos irmaos de `route`, com shape minimo compativel com `task`, `impl`, `vinculos`, `execucao` e `effects`.
297
-
298
- ```sema
299
- worker preparar_briefing {
300
- task: medir_drift
301
- vinculos {
302
- arquivo: "pacotes/cli/src/index.ts"
303
- worker: contexto_ia
304
- }
305
- execucao {
306
- retry: "fila_contexto"
307
- criticidade_operacional: alta
308
- }
309
- }
310
-
311
- webhook confirmar_contexto {
312
- task: mapear_projeto
313
- vinculos {
314
- webhook: "/interno/contexto-ia"
315
- }
316
- execucao {
317
- timeout: "15s"
318
- criticidade_operacional: media
319
- }
320
- }
321
- ```
322
-
323
- ## Flow com dependencia explicita
324
-
325
- ```sema
326
- flow operar_contexto_ia {
327
- entrada: Texto
328
- etapa mapear usa mapear_projeto com entrada = entrada
329
- etapa drift usa medir_drift com contrato = entrada depende_de mapear
330
- etapa briefing usa preparar_briefing com entrada = entrada depende_de drift
331
- effects {
332
- auditoria contexto_ia criticidade = alta
333
- }
334
- vinculos {
335
- simbolo: cli.src.index.comandoContextoIa
336
- }
337
- }
338
- ```
339
-
340
- ## Forma canonica
341
-
342
- O formatador passa a preferir:
343
-
344
- - `vinculos` com `arquivo` antes de `simbolo`
345
- - `auth` com `modo`, `estrategia`, `principal` e `origem`
346
- - `authz` com `papel|papeis`, `escopo|escopos`, `politica` e `tenant`
347
- - `dados` com `classificacao_padrao`, `redacao_log` e `retencao`
348
- - `audit` com `evento`, `ator`, `correlacao`, `retencao` e `motivo`
349
- - `execucao` com `idempotencia`, `timeout`, `retry`, `compensacao` e `criticidade_operacional`
350
- - strings operacionais como `arquivo`, `timeout`, `retry`, `compensacao`, `retencao` e `rotacao` com aspas
351
- - tipos compostos sem espacos quebrados em `Lista<T>` e `Mapa<K, V>`
352
-
353
- ## Resumo pratico
354
-
355
- Se a duvida for "isso vai ajudar a IA a editar com menos chute?", a sintaxe nova aponta para quatro coisas:
356
-
357
- - contrato rico
358
- - seguranca semantica explicita
359
- - vinculo rastreavel
360
- - execucao explicita
361
- - superficie moderna de primeira classe
@@ -1,107 +0,0 @@
1
- module exemplos.automacao {
2
- state onboarding_status {
3
- origem: automacao
4
- fields {
5
- lead_id: Id
6
- etapa_atual: Texto
7
- concluido: Booleano
8
- }
9
- }
10
-
11
- task executar_onboarding {
12
- input {
13
- lead_id: Id required
14
- email: Email required
15
- }
16
- output {
17
- protocolo: Id
18
- }
19
- rules {
20
- lead_id deve_ser valido
21
- email deve_ser email_valido
22
- }
23
- effects {
24
- consulta crm
25
- persistencia conta
26
- notificacao email detalhe_boas_vindas
27
- auditoria onboarding
28
- }
29
- guarantees {
30
- protocolo existe
31
- persistencia concluida
32
- }
33
- tests {
34
- caso "onboarding completo" {
35
- given {
36
- lead_id: "lead_1"
37
- email: "cliente@empresa.com"
38
- }
39
-
40
- expect {
41
- sucesso: verdadeiro
42
- }
43
- }
44
- }
45
- }
46
-
47
- task registrar_auditoria {
48
- input {
49
- protocolo: Id required
50
- }
51
- output {
52
- auditoria_id: Id
53
- }
54
- effects {
55
- auditoria onboarding
56
- }
57
- guarantees {
58
- auditoria_id existe
59
- }
60
- tests {
61
- caso "auditoria registrada" {
62
- given {
63
- protocolo: "prot_1"
64
- }
65
-
66
- expect {
67
- sucesso: verdadeiro
68
- }
69
- }
70
- }
71
- }
72
-
73
- task registrar_falha_onboarding {
74
- input {
75
- lead_id: Id required
76
- }
77
- output {
78
- protocolo_falha: Id
79
- }
80
- effects {
81
- auditoria falha_onboarding
82
- persistencia onboarding_falha
83
- }
84
- guarantees {
85
- protocolo_falha existe
86
- }
87
- tests {
88
- caso "falha registrada" {
89
- given {
90
- lead_id: "lead_1"
91
- }
92
-
93
- expect {
94
- sucesso: verdadeiro
95
- }
96
- }
97
- }
98
- }
99
-
100
- flow onboarding_cliente {
101
- lead_id: Id
102
- email: Email
103
- etapa receber usa executar_onboarding com lead_id = lead_id, email = email quando (sucesso existe ou persistencia concluida) em_sucesso auditar em_erro registrar_falha
104
- etapa auditar usa registrar_auditoria com protocolo = receber.protocolo depende_de receber
105
- etapa registrar_falha usa registrar_falha_onboarding com lead_id = lead_id depende_de receber
106
- }
107
- }