@semacode/cli 1.5.18 → 1.5.25

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 (93) hide show
  1. package/AGENTS.md +268 -260
  2. package/LICENSE +22 -22
  3. package/README.md +144 -104
  4. package/SEMA_BRIEF.curto.txt +7 -5
  5. package/SEMA_BRIEF.md +61 -5
  6. package/SEMA_BRIEF.micro.txt +6 -4
  7. package/SEMA_INDEX.json +991 -47
  8. package/dist/controleComercialSupabase.d.ts +326 -0
  9. package/dist/controleComercialSupabase.js +310 -0
  10. package/dist/controleComercialSupabase.js.map +1 -0
  11. package/dist/docs.js +48 -20
  12. package/dist/docs.js.map +1 -1
  13. package/dist/drift.d.ts +5 -3
  14. package/dist/drift.js +123 -14
  15. package/dist/drift.js.map +1 -1
  16. package/dist/index.js +1889 -38
  17. package/dist/index.js.map +1 -1
  18. package/dist/mcpRemoto.d.ts +32 -0
  19. package/dist/mcpRemoto.js +61 -0
  20. package/dist/mcpRemoto.js.map +1 -0
  21. package/dist/projeto.js +3 -1
  22. package/dist/projeto.js.map +1 -1
  23. package/docs/AGENT_STARTER.md +103 -97
  24. package/docs/cli.md +175 -106
  25. package/docs/como-ensinar-a-sema-para-ia.md +41 -35
  26. package/docs/deploy.md +231 -43
  27. package/docs/documentacao.md +61 -36
  28. package/docs/env.md +105 -56
  29. package/docs/extensao-vscode.md +12 -4
  30. package/docs/fluxo-pratico-ia-sema.md +182 -176
  31. package/docs/instalacao-e-primeiro-uso.md +52 -30
  32. package/docs/integracao-com-ia.md +108 -101
  33. package/docs/mcp.md +292 -51
  34. package/docs/pagamento-ponta-a-ponta.md +34 -28
  35. package/docs/persistencia-vendor-first.md +11 -5
  36. package/docs/prompt-base-ia-sema.md +13 -7
  37. package/docs/rollback.md +17 -15
  38. package/docs/sintaxe.md +180 -174
  39. package/exemplos/agendamento.sema +105 -105
  40. package/exemplos/assinatura.sema +133 -133
  41. package/exemplos/auditoria.sema +89 -89
  42. package/exemplos/autenticacao.sema +125 -125
  43. package/exemplos/author_obra_comum.sema +294 -0
  44. package/exemplos/author_tema_sensivel.sema +264 -0
  45. package/exemplos/automacao.sema +107 -107
  46. package/exemplos/cadastro_usuario.sema +54 -54
  47. package/exemplos/calculadora.sema +78 -78
  48. package/exemplos/crud_simples.sema +89 -89
  49. package/exemplos/estoque.sema +127 -127
  50. package/exemplos/exportacao.sema +94 -94
  51. package/exemplos/fila.sema +130 -130
  52. package/exemplos/integracao_externa.sema +94 -94
  53. package/exemplos/multi_tenant.sema +140 -140
  54. package/exemplos/notificacao.sema +149 -149
  55. package/exemplos/operacao_estrategia.sema +633 -633
  56. package/exemplos/pagamento.sema +434 -434
  57. package/exemplos/pagamento_dominio.sema +35 -35
  58. package/exemplos/pedido.sema +255 -255
  59. package/exemplos/permissao.sema +121 -121
  60. package/exemplos/persistencia_vendor_first.sema +86 -86
  61. package/exemplos/profile_game.sema +114 -0
  62. package/exemplos/profile_legal.sema +105 -0
  63. package/exemplos/profile_ops.sema +110 -0
  64. package/exemplos/profile_research.sema +104 -0
  65. package/exemplos/profile_software.sema +123 -0
  66. package/exemplos/profile_workflow_n8n.sema +99 -0
  67. package/exemplos/relatorio.sema +93 -93
  68. package/exemplos/replica_analitica_erp.sema +160 -160
  69. package/exemplos/testes_embutidos.sema +45 -45
  70. package/exemplos/tratamento_erro.sema +157 -157
  71. package/exemplos/upload_arquivo.sema +93 -93
  72. package/exemplos/webhook.sema +94 -94
  73. package/llms-full.txt +34 -34
  74. package/llms.txt +17 -17
  75. package/node_modules/@sema/gerador-css/dist/index.js +563 -563
  76. package/node_modules/@sema/gerador-css/package.json +1 -1
  77. package/node_modules/@sema/gerador-dart/package.json +1 -1
  78. package/node_modules/@sema/gerador-html/dist/index.js +90 -90
  79. package/node_modules/@sema/gerador-html/package.json +1 -1
  80. package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
  81. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  82. package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
  83. package/node_modules/@sema/gerador-lua/package.json +1 -1
  84. package/node_modules/@sema/gerador-python/dist/index.js +122 -96
  85. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  86. package/node_modules/@sema/gerador-python/package.json +1 -1
  87. package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
  88. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  89. package/node_modules/@sema/nucleo/dist/formatador/index.js +12 -4
  90. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  91. package/node_modules/@sema/nucleo/package.json +1 -1
  92. package/node_modules/@sema/padroes/package.json +1 -1
  93. package/package.json +11 -11
package/AGENTS.md CHANGED
@@ -1,12 +1,12 @@
1
- # Sema — Regras obrigatorias para IA
2
-
3
- O Sema e o protocolo de governanca de intencao deste projeto.
4
- Toda IA deve consultar o Sema antes de qualquer acao sobre codigo ou contratos.
5
-
6
- ## Mentalidade
7
-
8
- Pense como IA, nao como humano. Voce nao esta "programando" — esta consumindo e produzindo contratos semanticos estruturados. Ao ler um arquivo .sema, trate cada bloco como um no de grafo com entradas, saidas, efeitos e garantias. Ao gerar codigo, derive tudo do contrato — nunca invente logica que nao esteja declarada. O Sema existe para que voce opere com precisao, rastreabilidade e zero adivinhacao.
9
-
1
+ # Sema — Regras obrigatorias para IA
2
+
3
+ O Sema e o protocolo de governanca de intencao deste projeto.
4
+ Toda IA deve consultar o Sema antes de qualquer acao sobre codigo ou contratos.
5
+
6
+ ## Mentalidade
7
+
8
+ Pense como IA, nao como humano. Voce nao esta "programando" — esta consumindo e produzindo contratos semanticos estruturados. Ao ler um arquivo .sema, trate cada bloco como um no de grafo com entradas, saidas, efeitos e garantias. Ao gerar codigo, derive tudo do contrato — nunca invente logica que nao esteja declarada. O Sema existe para que voce opere com precisao, rastreabilidade e zero adivinhacao.
9
+
10
10
  ## Regras
11
11
 
12
12
  1. Ao abrir o projeto, chame sema_resumo para entender o estado atual.
@@ -15,258 +15,266 @@ Pense como IA, nao como humano. Voce nao esta "programando" — esta consumindo
15
15
  4. Ao criar ou editar um arquivo .sema, chame sema_validar ao final.
16
16
  5. Nunca invente contratos — use o Sema para descobrir o que ja existe.
17
17
  6. Se qualquer ferramenta Sema retornar erro, corrija o problema antes de prosseguir — nao avance com codigo enquanto houver erros Sema pendentes.
18
+ 7. Contrato vem antes de qualquer acao: crie, edite ou remova o `.sema` aplicavel antes de codigo, deploy, docs operacionais, workflow, texto Author, game, legal, research ou ops.
18
19
 
19
- ## MCP
20
-
21
- O servidor MCP do Sema roda localmente via: npx -y @semacode/mcp
22
- Use as ferramentas: sema_resumo, sema_validar, sema_drift, sema_impacto, sema_renomear_semantico, sema_inspecionar, sema_ir, sema_verificar, sema_contexto_ia, sema_prompt_ia, sema_sync_ai_entrypoints, sema_instalar_exemplos, sema_docs_impacto, sema_finalizar_mudanca.
23
-
24
- ## Contratos e exemplos
25
-
26
- - Sempre salve arquivos .sema na pasta `contratos/` do projeto.
27
- - Crie um arquivo .sema por modulo ou contexto de negocio. Exemplo: `contratos/pedido.sema`, `contratos/pagamento.sema`, `contratos/usuario.sema`. Nunca coloque modulos de contextos diferentes no mesmo arquivo.
28
- - Antes de criar qualquer arquivo .sema, leia todos os arquivos da pasta `exemplos/` para entender o formato correto da linguagem.
29
- - Nunca edite os arquivos da pasta `exemplos/`.
30
-
31
- ## Quando o projeto nao tem .sema
32
-
33
- Pergunte ao usuario se deseja semantizar o projeto e sugira: sema iniciar
20
+ ## Documentação pública
34
21
 
35
- ## Exemplos de arquivos .sema (referencia de formato)
36
-
37
- ### 1. Task simples com testes
38
- ```
39
- module exemplos.calculadora {
40
- task somar {
41
- input {
42
- a: Numero required
43
- b: Numero required
44
- }
45
- output {
46
- resultado: Numero
47
- }
48
- rules {
49
- a deve_ser numero_valido
50
- b deve_ser numero_valido
51
- }
52
- effects {
53
- auditoria operacao soma
54
- }
55
- guarantees {
56
- resultado existe
57
- }
58
- error {
59
- entrada_invalida: "Os valores precisam ser numericos."
60
- }
61
- tests {
62
- caso "soma basica" {
63
- given { a: 2 b: 3 }
64
- expect { sucesso: verdadeiro }
65
- }
66
- }
67
- }
68
- }
69
- ```
70
-
71
- ### 2. Entity + CRUD com route
72
- ```
73
- module exemplos.crud.simples {
74
- entity Produto {
75
- fields {
76
- id: Id
77
- nome: Texto
78
- preco: Decimal
79
- ativo: Booleano
80
- }
81
- }
82
-
83
- task criar_produto {
84
- input {
85
- nome: Texto required
86
- preco: Decimal required
87
- }
88
- output {
89
- produto: Produto
90
- }
91
- rules {
92
- nome deve_ser preenchido
93
- preco deve_ser positivo
94
- }
95
- effects {
96
- persistencia Produto
97
- auditoria produto_criado
98
- }
99
- guarantees {
100
- produto existe
101
- }
102
- tests {
103
- caso "cria produto" {
104
- given { nome: "Caneca" preco: 39.9 }
105
- expect { sucesso: verdadeiro }
106
- }
107
- }
108
- }
109
-
110
- route produtos {
111
- metodo: POST
112
- caminho: /produtos
113
- task: criar_produto
114
- finalidade: cadastro_produto
115
- input { nome: Texto preco: Decimal }
116
- output { produto: Produto }
117
- }
118
- }
119
- ```
120
-
121
- ### 3. Cadastro com validacoes e unicidade
122
- ```
123
- module exemplos.cadastro.usuario {
124
- entity Usuario {
125
- fields {
126
- id: Id
127
- nome: Texto
128
- email: Email
129
- ativo: Booleano
130
- }
131
- }
132
-
133
- task criar_usuario {
134
- input {
135
- nome: Texto required
136
- email: Email required
137
- }
138
- output {
139
- usuario: Usuario
140
- }
141
- rules {
142
- nome deve_ser preenchido
143
- email deve_ser email_valido
144
- email deve_ser unico em Usuario.email
145
- }
146
- effects {
147
- persistencia Usuario
148
- evento usuario_criado
149
- auditoria cadastro_usuario
150
- }
151
- guarantees {
152
- usuario existe
153
- persistencia concluida
154
- }
155
- error {
156
- email_duplicado: "Ja existe usuario com este email."
157
- entrada_invalida: "Os dados informados nao atendem as regras."
158
- }
159
- tests {
160
- caso "cria usuario valido" {
161
- given { nome: "Ana" email: "ana@empresa.com" }
162
- expect { sucesso: verdadeiro }
163
- }
164
- }
165
- }
166
- }
167
- ```
168
-
169
- ### 4. Pagamento com state e flow
170
- ```
171
- module exemplos.pagamento {
172
- task processar_pagamento {
173
- input {
174
- pagamento_id: Id required
175
- valor: Decimal required
176
- token: Texto required
177
- }
178
- output {
179
- pagamento: Pagamento
180
- status: StatusPagamento
181
- }
182
- rules {
183
- valor > 0
184
- token deve_ser valido
185
- }
186
- effects {
187
- consulta gateway_pagamento criticidade = alta
188
- persistencia Pagamento criticidade = alta
189
- evento pagamento_autorizado criticidade = media
190
- auditoria pagamento criticidade = alta
191
- }
192
- state ciclo_pagamento {
193
- transitions {
194
- PENDENTE -> AUTORIZADO
195
- AUTORIZADO -> PROCESSADO
196
- }
197
- }
198
- guarantees {
199
- pagamento existe
200
- status em [AUTORIZADO, PROCESSADO]
201
- }
202
- error {
203
- autorizacao_negada: "Recusado pelo gateway."
204
- timeout_gateway: "Gateway nao respondeu."
205
- }
206
- tests {
207
- caso "pagamento autorizado" {
208
- given { pagamento_id: "pag_1" valor: 199.9 token: "tok_ok" }
209
- expect { sucesso: verdadeiro }
210
- }
211
- caso "pagamento recusado" {
212
- given { pagamento_id: "pag_err" valor: 10 token: "tok_recusado" }
213
- expect { sucesso: falso }
214
- error { tipo: "autorizacao_negada" }
215
- }
216
- }
217
- }
218
-
219
- flow orquestracao_pagamento {
220
- pagamento_id: Id
221
- valor: Decimal
222
- token: Texto
223
- etapa autorizar usa processar_pagamento com pagamento_id = pagamento_id, valor = valor, token = token em_sucesso confirmar em_erro registrar_falha
224
- etapa confirmar usa confirmar_pagamento com pagamento_id = pagamento_id depende_de autorizar
225
- etapa registrar_falha usa registrar_timeout_pagamento com pagamento_id = pagamento_id depende_de autorizar
226
- }
227
- }
228
- ```
22
+ Toda documentação pública nova ou alterada deve expor entrada trilíngue nesta ordem exata: English, Português, Español.
23
+ Português e espanhol precisam preservar acentos. README do GitHub, README do npm, docs públicas, notas de release e textos públicos do site não podem voltar para português sem acento nem para documento monolíngue.
24
+
25
+ ## MCP
229
26
 
230
- ### 5. Tratamento de erro com flow ramificado
231
- ```
232
- module exemplos.tratamento.erro {
233
- task executar_operacao_sensivel {
234
- input {
235
- chave: Texto required
236
- }
237
- output {
238
- protocolo: Id
239
- }
240
- rules {
241
- chave deve_ser preenchida
242
- }
243
- effects {
244
- consulta cofre
245
- auditoria falha_operacao_sensivel
246
- }
247
- guarantees {
248
- protocolo existe
249
- }
250
- error {
251
- acesso_negado: "A chave nao tem permissao."
252
- recurso_indisponivel: "Servico temporariamente indisponivel."
253
- }
254
- tests {
255
- caso "falha por acesso negado" {
256
- given { chave: "sem_permissao" }
257
- expect { sucesso: falso }
258
- error { tipo: "acesso_negado" }
259
- }
260
- }
261
- }
27
+ O servidor MCP do Sema e uma superficie privada/comercial acessada por endpoint remoto autorizado; ele nao e instalado por pacote npm publico neste repositorio.
28
+ Use as ferramentas: sema_resumo, sema_validar, sema_drift, sema_impacto, sema_renomear_semantico, sema_inspecionar, sema_ir, sema_verificar, sema_contexto_ia, sema_prompt_ia, sema_author_iniciar, sema_author_validar, sema_author_briefing, sema_author_revisar_cliches, sema_sync_ai_entrypoints, sema_instalar_exemplos, sema_docs_impacto, sema_finalizar_mudanca.
262
29
 
263
- flow resposta_segura {
264
- chave: Texto
265
- etapa tentar usa executar_operacao_sensivel com chave = chave em_sucesso concluir em_erro registrar_falha por_erro acesso_negado = tratar_acesso_negado, recurso_indisponivel = agendar_retentativa
266
- etapa tratar_acesso_negado usa responder_acesso_negado com chave = chave depende_de tentar
267
- etapa agendar_retentativa usa responder_retentativa com chave = chave depende_de tentar
268
- etapa registrar_falha usa registrar_auditoria_falha com chave = chave depende_de tentar
269
- etapa concluir usa registrar_sucesso com protocolo = tentar.protocolo depende_de tentar
270
- }
271
- }
272
- ```
30
+ O MCP deve deixar claro em toda orientacao: se nao existe contrato, crie; se a intencao mudou, edite; se a capacidade saiu, remova ou aposente. Isso vale para todo tipo de Sema: Software, Author, Workflow, Ops, Game, Legal, Research e profiles futuros.
31
+
32
+ ## Contratos e exemplos
33
+
34
+ - Sempre salve arquivos .sema na pasta `contratos/` do projeto.
35
+ - Crie um arquivo .sema por modulo ou contexto de negocio. Exemplo: `contratos/pedido.sema`, `contratos/pagamento.sema`, `contratos/usuario.sema`. Nunca coloque modulos de contextos diferentes no mesmo arquivo.
36
+ - Antes de criar qualquer arquivo .sema, leia todos os arquivos da pasta `exemplos/` para entender o formato correto da linguagem.
37
+ - Nunca edite os arquivos da pasta `exemplos/`.
38
+
39
+ ## Quando o projeto nao tem .sema
40
+
41
+ Pergunte ao usuario se deseja semantizar o projeto e sugira: sema iniciar
42
+
43
+ ## Exemplos de arquivos .sema (referencia de formato)
44
+
45
+ ### 1. Task simples com testes
46
+ ```
47
+ module exemplos.calculadora {
48
+ task somar {
49
+ input {
50
+ a: Numero required
51
+ b: Numero required
52
+ }
53
+ output {
54
+ resultado: Numero
55
+ }
56
+ rules {
57
+ a deve_ser numero_valido
58
+ b deve_ser numero_valido
59
+ }
60
+ effects {
61
+ auditoria operacao soma
62
+ }
63
+ guarantees {
64
+ resultado existe
65
+ }
66
+ error {
67
+ entrada_invalida: "Os valores precisam ser numericos."
68
+ }
69
+ tests {
70
+ caso "soma basica" {
71
+ given { a: 2 b: 3 }
72
+ expect { sucesso: verdadeiro }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ### 2. Entity + CRUD com route
80
+ ```
81
+ module exemplos.crud.simples {
82
+ entity Produto {
83
+ fields {
84
+ id: Id
85
+ nome: Texto
86
+ preco: Decimal
87
+ ativo: Booleano
88
+ }
89
+ }
90
+
91
+ task criar_produto {
92
+ input {
93
+ nome: Texto required
94
+ preco: Decimal required
95
+ }
96
+ output {
97
+ produto: Produto
98
+ }
99
+ rules {
100
+ nome deve_ser preenchido
101
+ preco deve_ser positivo
102
+ }
103
+ effects {
104
+ persistencia Produto
105
+ auditoria produto_criado
106
+ }
107
+ guarantees {
108
+ produto existe
109
+ }
110
+ tests {
111
+ caso "cria produto" {
112
+ given { nome: "Caneca" preco: 39.9 }
113
+ expect { sucesso: verdadeiro }
114
+ }
115
+ }
116
+ }
117
+
118
+ route produtos {
119
+ metodo: POST
120
+ caminho: /produtos
121
+ task: criar_produto
122
+ finalidade: cadastro_produto
123
+ input { nome: Texto preco: Decimal }
124
+ output { produto: Produto }
125
+ }
126
+ }
127
+ ```
128
+
129
+ ### 3. Cadastro com validacoes e unicidade
130
+ ```
131
+ module exemplos.cadastro.usuario {
132
+ entity Usuario {
133
+ fields {
134
+ id: Id
135
+ nome: Texto
136
+ email: Email
137
+ ativo: Booleano
138
+ }
139
+ }
140
+
141
+ task criar_usuario {
142
+ input {
143
+ nome: Texto required
144
+ email: Email required
145
+ }
146
+ output {
147
+ usuario: Usuario
148
+ }
149
+ rules {
150
+ nome deve_ser preenchido
151
+ email deve_ser email_valido
152
+ email deve_ser unico em Usuario.email
153
+ }
154
+ effects {
155
+ persistencia Usuario
156
+ evento usuario_criado
157
+ auditoria cadastro_usuario
158
+ }
159
+ guarantees {
160
+ usuario existe
161
+ persistencia concluida
162
+ }
163
+ error {
164
+ email_duplicado: "Ja existe usuario com este email."
165
+ entrada_invalida: "Os dados informados nao atendem as regras."
166
+ }
167
+ tests {
168
+ caso "cria usuario valido" {
169
+ given { nome: "Ana" email: "ana@empresa.com" }
170
+ expect { sucesso: verdadeiro }
171
+ }
172
+ }
173
+ }
174
+ }
175
+ ```
176
+
177
+ ### 4. Pagamento com state e flow
178
+ ```
179
+ module exemplos.pagamento {
180
+ task processar_pagamento {
181
+ input {
182
+ pagamento_id: Id required
183
+ valor: Decimal required
184
+ token: Texto required
185
+ }
186
+ output {
187
+ pagamento: Pagamento
188
+ status: StatusPagamento
189
+ }
190
+ rules {
191
+ valor > 0
192
+ token deve_ser valido
193
+ }
194
+ effects {
195
+ consulta gateway_pagamento criticidade = alta
196
+ persistencia Pagamento criticidade = alta
197
+ evento pagamento_autorizado criticidade = media
198
+ auditoria pagamento criticidade = alta
199
+ }
200
+ state ciclo_pagamento {
201
+ transitions {
202
+ PENDENTE -> AUTORIZADO
203
+ AUTORIZADO -> PROCESSADO
204
+ }
205
+ }
206
+ guarantees {
207
+ pagamento existe
208
+ status em [AUTORIZADO, PROCESSADO]
209
+ }
210
+ error {
211
+ autorizacao_negada: "Recusado pelo gateway."
212
+ timeout_gateway: "Gateway nao respondeu."
213
+ }
214
+ tests {
215
+ caso "pagamento autorizado" {
216
+ given { pagamento_id: "pag_1" valor: 199.9 token: "tok_ok" }
217
+ expect { sucesso: verdadeiro }
218
+ }
219
+ caso "pagamento recusado" {
220
+ given { pagamento_id: "pag_err" valor: 10 token: "tok_recusado" }
221
+ expect { sucesso: falso }
222
+ error { tipo: "autorizacao_negada" }
223
+ }
224
+ }
225
+ }
226
+
227
+ flow orquestracao_pagamento {
228
+ pagamento_id: Id
229
+ valor: Decimal
230
+ token: Texto
231
+ etapa autorizar usa processar_pagamento com pagamento_id = pagamento_id, valor = valor, token = token em_sucesso confirmar em_erro registrar_falha
232
+ etapa confirmar usa confirmar_pagamento com pagamento_id = pagamento_id depende_de autorizar
233
+ etapa registrar_falha usa registrar_timeout_pagamento com pagamento_id = pagamento_id depende_de autorizar
234
+ }
235
+ }
236
+ ```
237
+
238
+ ### 5. Tratamento de erro com flow ramificado
239
+ ```
240
+ module exemplos.tratamento.erro {
241
+ task executar_operacao_sensivel {
242
+ input {
243
+ chave: Texto required
244
+ }
245
+ output {
246
+ protocolo: Id
247
+ }
248
+ rules {
249
+ chave deve_ser preenchida
250
+ }
251
+ effects {
252
+ consulta cofre
253
+ auditoria falha_operacao_sensivel
254
+ }
255
+ guarantees {
256
+ protocolo existe
257
+ }
258
+ error {
259
+ acesso_negado: "A chave nao tem permissao."
260
+ recurso_indisponivel: "Servico temporariamente indisponivel."
261
+ }
262
+ tests {
263
+ caso "falha por acesso negado" {
264
+ given { chave: "sem_permissao" }
265
+ expect { sucesso: falso }
266
+ error { tipo: "acesso_negado" }
267
+ }
268
+ }
269
+ }
270
+
271
+ flow resposta_segura {
272
+ chave: Texto
273
+ etapa tentar usa executar_operacao_sensivel com chave = chave em_sucesso concluir em_erro registrar_falha por_erro acesso_negado = tratar_acesso_negado, recurso_indisponivel = agendar_retentativa
274
+ etapa tratar_acesso_negado usa responder_acesso_negado com chave = chave depende_de tentar
275
+ etapa agendar_retentativa usa responder_retentativa com chave = chave depende_de tentar
276
+ etapa registrar_falha usa registrar_auditoria_falha com chave = chave depende_de tentar
277
+ etapa concluir usa registrar_sucesso com protocolo = tentar.protocolo depende_de tentar
278
+ }
279
+ }
280
+ ```
package/LICENSE CHANGED
@@ -1,22 +1,22 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Sema
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sema
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+