@semacode/cli 1.5.11 → 1.5.16

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 (177) hide show
  1. package/README.md +6 -1
  2. package/dist/index.js +446 -32
  3. package/package.json +23 -32
  4. package/semacode-cli-1.3.1.tgz +0 -0
  5. package/src/angular-consumer-standalone.ts +312 -0
  6. package/src/cpp-symbols.ts +82 -0
  7. package/src/docs.ts +535 -0
  8. package/src/dotnet-http.ts +355 -0
  9. package/src/drift.ts +4933 -0
  10. package/src/go-http.ts +118 -0
  11. package/src/importador.ts +3891 -0
  12. package/src/index.ts +5641 -0
  13. package/src/java-http.ts +247 -0
  14. package/src/lua-symbols.ts +114 -0
  15. package/src/php-symbols.ts +462 -0
  16. package/src/projeto.ts +862 -0
  17. package/src/python-http.ts +258 -0
  18. package/src/rust-http.ts +125 -0
  19. package/src/tipos.ts +24 -0
  20. package/src/typescript-http.ts +1076 -0
  21. package/tsconfig.json +20 -0
  22. package/AGENTS.md +0 -272
  23. package/LICENSE +0 -22
  24. package/SEMA_BRIEF.curto.txt +0 -9
  25. package/SEMA_BRIEF.md +0 -63
  26. package/SEMA_BRIEF.micro.txt +0 -7
  27. package/SEMA_INDEX.json +0 -799
  28. package/dist/angular-consumer-standalone.d.ts +0 -6
  29. package/dist/angular-consumer-standalone.js.map +0 -1
  30. package/dist/cpp-symbols.d.ts +0 -10
  31. package/dist/cpp-symbols.js.map +0 -1
  32. package/dist/docs.d.ts +0 -56
  33. package/dist/docs.js.map +0 -1
  34. package/dist/dotnet-http.d.ts +0 -23
  35. package/dist/dotnet-http.js.map +0 -1
  36. package/dist/drift.d.ts +0 -225
  37. package/dist/drift.js.map +0 -1
  38. package/dist/go-http.d.ts +0 -23
  39. package/dist/go-http.js.map +0 -1
  40. package/dist/importador.d.ts +0 -31
  41. package/dist/importador.js.map +0 -1
  42. package/dist/index.d.ts +0 -2
  43. package/dist/index.js.map +0 -1
  44. package/dist/java-http.d.ts +0 -23
  45. package/dist/java-http.js.map +0 -1
  46. package/dist/lua-symbols.d.ts +0 -10
  47. package/dist/lua-symbols.js.map +0 -1
  48. package/dist/php-symbols.d.ts +0 -24
  49. package/dist/php-symbols.js.map +0 -1
  50. package/dist/projeto.d.ts +0 -53
  51. package/dist/projeto.js.map +0 -1
  52. package/dist/python-http.d.ts +0 -23
  53. package/dist/python-http.js.map +0 -1
  54. package/dist/rust-http.d.ts +0 -23
  55. package/dist/rust-http.js.map +0 -1
  56. package/dist/tipos.d.ts +0 -3
  57. package/dist/tipos.js.map +0 -1
  58. package/dist/typescript-http.d.ts +0 -35
  59. package/dist/typescript-http.js.map +0 -1
  60. package/docs/AGENT_STARTER.md +0 -102
  61. package/docs/cli.md +0 -110
  62. package/docs/como-ensinar-a-sema-para-ia.md +0 -149
  63. package/docs/deploy.md +0 -70
  64. package/docs/documentacao.md +0 -63
  65. package/docs/env.md +0 -56
  66. package/docs/extensao-vscode.md +0 -45
  67. package/docs/fluxo-pratico-ia-sema.md +0 -177
  68. package/docs/instalacao-e-primeiro-uso.md +0 -112
  69. package/docs/integracao-com-ia.md +0 -101
  70. package/docs/mcp.md +0 -53
  71. package/docs/pagamento-ponta-a-ponta.md +0 -155
  72. package/docs/persistencia-vendor-first.md +0 -145
  73. package/docs/prompt-base-ia-sema.md +0 -104
  74. package/docs/rollback.md +0 -47
  75. package/docs/sintaxe.md +0 -244
  76. package/exemplos/agendamento.sema +0 -106
  77. package/exemplos/assinatura.sema +0 -136
  78. package/exemplos/auditoria.sema +0 -88
  79. package/exemplos/autenticacao.sema +0 -125
  80. package/exemplos/automacao.sema +0 -107
  81. package/exemplos/cadastro_usuario.sema +0 -54
  82. package/exemplos/calculadora.sema +0 -78
  83. package/exemplos/crud_simples.sema +0 -89
  84. package/exemplos/estoque.sema +0 -126
  85. package/exemplos/exportacao.sema +0 -94
  86. package/exemplos/fila.sema +0 -131
  87. package/exemplos/integracao_externa.sema +0 -94
  88. package/exemplos/multi_tenant.sema +0 -140
  89. package/exemplos/notificacao.sema +0 -98
  90. package/exemplos/operacao_estrategia.sema +0 -402
  91. package/exemplos/pagamento.sema +0 -222
  92. package/exemplos/pagamento_dominio.sema +0 -35
  93. package/exemplos/pedido.sema +0 -119
  94. package/exemplos/permissao.sema +0 -121
  95. package/exemplos/persistencia_vendor_first.sema +0 -86
  96. package/exemplos/relatorio.sema +0 -93
  97. package/exemplos/testes_embutidos.sema +0 -45
  98. package/exemplos/tratamento_erro.sema +0 -157
  99. package/exemplos/upload_arquivo.sema +0 -93
  100. package/exemplos/webhook.sema +0 -96
  101. package/llms-full.txt +0 -34
  102. package/llms.txt +0 -17
  103. package/node_modules/@sema/gerador-css/dist/index.d.ts +0 -3
  104. package/node_modules/@sema/gerador-css/dist/index.js +0 -592
  105. package/node_modules/@sema/gerador-css/dist/index.js.map +0 -1
  106. package/node_modules/@sema/gerador-css/package.json +0 -7
  107. package/node_modules/@sema/gerador-dart/dist/index.d.ts +0 -3
  108. package/node_modules/@sema/gerador-dart/dist/index.js +0 -44
  109. package/node_modules/@sema/gerador-dart/dist/index.js.map +0 -1
  110. package/node_modules/@sema/gerador-dart/package.json +0 -7
  111. package/node_modules/@sema/gerador-html/dist/index.d.ts +0 -3
  112. package/node_modules/@sema/gerador-html/dist/index.js +0 -163
  113. package/node_modules/@sema/gerador-html/dist/index.js.map +0 -1
  114. package/node_modules/@sema/gerador-html/package.json +0 -7
  115. package/node_modules/@sema/gerador-javascript/dist/index.d.ts +0 -3
  116. package/node_modules/@sema/gerador-javascript/dist/index.js +0 -421
  117. package/node_modules/@sema/gerador-javascript/dist/index.js.map +0 -1
  118. package/node_modules/@sema/gerador-javascript/package.json +0 -7
  119. package/node_modules/@sema/gerador-lua/dist/index.d.ts +0 -3
  120. package/node_modules/@sema/gerador-lua/dist/index.js +0 -328
  121. package/node_modules/@sema/gerador-lua/dist/index.js.map +0 -1
  122. package/node_modules/@sema/gerador-lua/package.json +0 -7
  123. package/node_modules/@sema/gerador-python/dist/index.d.ts +0 -6
  124. package/node_modules/@sema/gerador-python/dist/index.js +0 -729
  125. package/node_modules/@sema/gerador-python/dist/index.js.map +0 -1
  126. package/node_modules/@sema/gerador-python/package.json +0 -7
  127. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +0 -6
  128. package/node_modules/@sema/gerador-typescript/dist/index.js +0 -793
  129. package/node_modules/@sema/gerador-typescript/dist/index.js.map +0 -1
  130. package/node_modules/@sema/gerador-typescript/package.json +0 -7
  131. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +0 -123
  132. package/node_modules/@sema/nucleo/dist/ast/tipos.js +0 -2
  133. package/node_modules/@sema/nucleo/dist/ast/tipos.js.map +0 -1
  134. package/node_modules/@sema/nucleo/dist/diagnosticos/index.d.ts +0 -21
  135. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js +0 -12
  136. package/node_modules/@sema/nucleo/dist/diagnosticos/index.js.map +0 -1
  137. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +0 -9
  138. package/node_modules/@sema/nucleo/dist/formatador/index.js +0 -460
  139. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +0 -1
  140. package/node_modules/@sema/nucleo/dist/index.d.ts +0 -35
  141. package/node_modules/@sema/nucleo/dist/index.js +0 -96
  142. package/node_modules/@sema/nucleo/dist/index.js.map +0 -1
  143. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +0 -5
  144. package/node_modules/@sema/nucleo/dist/ir/conversor.js +0 -883
  145. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +0 -1
  146. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +0 -345
  147. package/node_modules/@sema/nucleo/dist/ir/modelos.js +0 -2
  148. package/node_modules/@sema/nucleo/dist/ir/modelos.js.map +0 -1
  149. package/node_modules/@sema/nucleo/dist/lexer/lexer.d.ts +0 -7
  150. package/node_modules/@sema/nucleo/dist/lexer/lexer.js +0 -122
  151. package/node_modules/@sema/nucleo/dist/lexer/lexer.js.map +0 -1
  152. package/node_modules/@sema/nucleo/dist/lexer/tokens.d.ts +0 -8
  153. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -61
  154. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +0 -1
  155. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +0 -9
  156. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -771
  157. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +0 -1
  158. package/node_modules/@sema/nucleo/dist/persistencia/contratos.d.ts +0 -39
  159. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +0 -294
  160. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +0 -1
  161. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +0 -57
  162. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +0 -1617
  163. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +0 -1
  164. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +0 -104
  165. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +0 -445
  166. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +0 -1
  167. package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +0 -91
  168. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +0 -258
  169. package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +0 -1
  170. package/node_modules/@sema/nucleo/dist/util/arquivos.d.ts +0 -2
  171. package/node_modules/@sema/nucleo/dist/util/arquivos.js +0 -25
  172. package/node_modules/@sema/nucleo/dist/util/arquivos.js.map +0 -1
  173. package/node_modules/@sema/nucleo/package.json +0 -7
  174. package/node_modules/@sema/padroes/dist/index.d.ts +0 -25
  175. package/node_modules/@sema/padroes/dist/index.js +0 -316
  176. package/node_modules/@sema/padroes/dist/index.js.map +0 -1
  177. package/node_modules/@sema/padroes/package.json +0 -7
@@ -1,125 +0,0 @@
1
- module exemplos.autenticacao {
2
- docs {
3
- resumo: "Login, logout e renovacao de sessao com tokens."
4
- }
5
-
6
- entity Sessao {
7
- fields {
8
- id: Id
9
- usuario_id: Id
10
- token: Texto
11
- refresh_token: Texto
12
- expira_em: Timestamp
13
- ativo: Booleano
14
- }
15
- }
16
-
17
- task fazer_login {
18
- input {
19
- email: Email required
20
- senha: Texto required
21
- }
22
- output {
23
- token: Texto
24
- refresh_token: Texto
25
- expira_em: Timestamp
26
- }
27
- rules {
28
- email deve_ser email_valido
29
- senha deve_ser preenchida
30
- }
31
- effects {
32
- consulta Usuario por email
33
- persistencia Sessao
34
- auditoria login_realizado
35
- evento sessao_iniciada
36
- }
37
- state ciclo_sessao {
38
- transitions {
39
- INATIVA -> ATIVA
40
- }
41
- }
42
- guarantees {
43
- token existe
44
- refresh_token existe
45
- }
46
- error {
47
- credenciais_invalidas: "Email ou senha incorretos."
48
- conta_bloqueada: "Esta conta foi temporariamente bloqueada."
49
- conta_inativa: "Esta conta nao esta ativa."
50
- }
51
- tests {
52
- caso "login valido" {
53
- given { email: "user@app.com" senha: "senha123" }
54
- expect { sucesso: verdadeiro }
55
- }
56
- caso "senha errada" {
57
- given { email: "user@app.com" senha: "errada" }
58
- expect { sucesso: falso }
59
- error { tipo: "credenciais_invalidas" }
60
- }
61
- }
62
- }
63
-
64
- task renovar_token {
65
- input {
66
- refresh_token: Texto required
67
- }
68
- output {
69
- token: Texto
70
- expira_em: Timestamp
71
- }
72
- rules {
73
- refresh_token deve_ser valido
74
- refresh_token deve_ser nao_expirado
75
- }
76
- effects {
77
- consulta Sessao por refresh_token
78
- persistencia Sessao
79
- auditoria token_renovado
80
- }
81
- guarantees {
82
- token existe
83
- }
84
- error {
85
- refresh_invalido: "Token de renovacao invalido ou expirado."
86
- }
87
- tests {
88
- caso "renova com token valido" {
89
- given { refresh_token: "valid_refresh" }
90
- expect { sucesso: verdadeiro }
91
- }
92
- }
93
- }
94
-
95
- task fazer_logout {
96
- input {
97
- token: Texto required
98
- }
99
- output {
100
- protocolo: Id
101
- }
102
- rules {
103
- token deve_ser valido
104
- }
105
- effects {
106
- persistencia Sessao
107
- auditoria logout_realizado
108
- evento sessao_encerrada
109
- }
110
- state ciclo_sessao {
111
- transitions {
112
- ATIVA -> INATIVA
113
- }
114
- }
115
- guarantees {
116
- protocolo existe
117
- }
118
- tests {
119
- caso "logout valido" {
120
- given { token: "valid_token" }
121
- expect { sucesso: verdadeiro }
122
- }
123
- }
124
- }
125
- }
@@ -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
- }
@@ -1,54 +0,0 @@
1
- module exemplos.cadastro.usuario {
2
- docs {
3
- resumo: "Cadastro de usuario com entidade,validacoes e persistencia declarada."
4
- }
5
-
6
- entity Usuario {
7
- fields {
8
- id: Id
9
- nome: Texto
10
- email: Email
11
- ativo: Booleano
12
- }
13
- }
14
-
15
- task criar_usuario {
16
- input {
17
- nome: Texto required
18
- email: Email required
19
- }
20
- output {
21
- usuario: Usuario
22
- }
23
- rules {
24
- nome deve_ser preenchido
25
- email deve_ser email_valido
26
- email deve_ser unico em Usuario.email
27
- }
28
- effects {
29
- persistencia Usuario
30
- evento usuario_criado
31
- auditoria cadastro_usuario
32
- }
33
- guarantees {
34
- usuario existe
35
- persistencia concluida
36
- }
37
- error {
38
- email_duplicado: "Ja existe usuario com este email."
39
- entrada_invalida: "Os dados informados nao atendem as regras."
40
- }
41
- tests {
42
- caso "cria usuario valido" {
43
- given {
44
- nome: "Ana"
45
- email: "ana@empresa.com"
46
- }
47
-
48
- expect {
49
- sucesso: verdadeiro
50
- }
51
- }
52
- }
53
- }
54
- }
@@ -1,78 +0,0 @@
1
- module exemplos.calculadora {
2
- docs {
3
- resumo: "Operacoes aritmeticas simples com garantias e testes."
4
- }
5
-
6
- comments {
7
- observacao: "Exemplo base para demonstrar tarefas semanticas puras."
8
- }
9
-
10
- task somar {
11
- input {
12
- a: Numero required
13
- b: Numero required
14
- }
15
- output {
16
- resultado: Numero
17
- }
18
- rules {
19
- a deve_ser numero_valido
20
- b deve_ser numero_valido
21
- }
22
- effects {
23
- auditoria operacao soma
24
- }
25
- guarantees {
26
- resultado existe
27
- }
28
- error {
29
- entrada_invalida: "Os valores precisam ser numericos."
30
- }
31
- tests {
32
- caso "soma basica" {
33
- given {
34
- a: 2
35
- b: 3
36
- }
37
-
38
- expect {
39
- sucesso: verdadeiro
40
- }
41
- }
42
- }
43
- }
44
-
45
- task dividir {
46
- input {
47
- dividendo: Numero required
48
- divisor: Numero required
49
- }
50
- output {
51
- resultado: Numero
52
- }
53
- rules {
54
- divisor deve_ser diferente_de_zero
55
- }
56
- effects {
57
- auditoria operacao divisao
58
- }
59
- guarantees {
60
- resultado existe
61
- }
62
- error {
63
- divisor_zero: "Nao e permitido dividir por zero."
64
- }
65
- tests {
66
- caso "divisao valida" {
67
- given {
68
- dividendo: 10
69
- divisor: 2
70
- }
71
-
72
- expect {
73
- sucesso: verdadeiro
74
- }
75
- }
76
- }
77
- }
78
- }
@@ -1,89 +0,0 @@
1
- module exemplos.crud.simples {
2
- entity Produto {
3
- fields {
4
- id: Id
5
- nome: Texto
6
- preco: Decimal
7
- ativo: Booleano
8
- }
9
- }
10
-
11
- task criar_produto {
12
- input {
13
- nome: Texto required
14
- preco: Decimal required
15
- }
16
- output {
17
- produto: Produto
18
- }
19
- rules {
20
- nome deve_ser preenchido
21
- preco deve_ser positivo
22
- }
23
- effects {
24
- persistencia Produto
25
- auditoria produto_criado
26
- }
27
- guarantees {
28
- produto existe
29
- }
30
- tests {
31
- caso "cria produto" {
32
- given {
33
- nome: "Caneca"
34
- preco: 39.9
35
- }
36
-
37
- expect {
38
- sucesso: verdadeiro
39
- }
40
- }
41
- }
42
- }
43
-
44
- task atualizar_produto {
45
- input {
46
- id: Id required
47
- nome: Texto
48
- preco: Decimal
49
- }
50
- output {
51
- produto: Produto
52
- }
53
- rules {
54
- id deve_ser valido
55
- }
56
- effects {
57
- persistencia Produto
58
- auditoria produto_atualizado
59
- }
60
- guarantees {
61
- produto existe
62
- }
63
- tests {
64
- caso "atualiza produto" {
65
- given {
66
- id: "prod_1"
67
- }
68
-
69
- expect {
70
- sucesso: verdadeiro
71
- }
72
- }
73
- }
74
- }
75
-
76
- route produtos {
77
- metodo: POST
78
- caminho: /produtos
79
- task: criar_produto
80
- finalidade: cadastro_produto
81
- input {
82
- nome: Texto
83
- preco: Decimal
84
- }
85
- output {
86
- produto: Produto
87
- }
88
- }
89
- }
@@ -1,126 +0,0 @@
1
- module exemplos.estoque {
2
- docs {
3
- resumo: "Controle de estoque com reserva, entrada e saida de produtos."
4
- }
5
-
6
- entity ItemEstoque {
7
- fields {
8
- id: Id
9
- produto_id: Id
10
- quantidade: Inteiro
11
- quantidade_reservada: Inteiro
12
- localizacao: Texto
13
- }
14
- }
15
-
16
- entity MovimentacaoEstoque {
17
- fields {
18
- id: Id
19
- produto_id: Id
20
- tipo: Texto
21
- quantidade: Inteiro
22
- motivo: Texto
23
- realizada_em: Timestamp
24
- }
25
- }
26
-
27
- task reservar_estoque {
28
- input {
29
- produto_id: Id required
30
- quantidade: Inteiro required
31
- pedido_id: Id required
32
- }
33
- output {
34
- reserva_id: Id
35
- }
36
- rules {
37
- quantidade > 0
38
- produto_id deve_ser valido
39
- }
40
- effects {
41
- consulta ItemEstoque por produto_id criticidade = alta
42
- persistencia ItemEstoque
43
- persistencia MovimentacaoEstoque
44
- evento estoque_reservado criticidade = media
45
- auditoria reserva_estoque
46
- }
47
- guarantees {
48
- reserva_id existe
49
- ItemEstoque.quantidade_reservada >= quantidade
50
- }
51
- error {
52
- estoque_insuficiente: "Quantidade solicitada indisponivel em estoque."
53
- produto_nao_encontrado: "Produto nao localizado no estoque."
54
- }
55
- tests {
56
- caso "reserva com estoque disponivel" {
57
- given { produto_id: "prod_1" quantidade: 5 pedido_id: "ped_1" }
58
- expect { sucesso: verdadeiro }
59
- }
60
- caso "reserva sem estoque" {
61
- given { produto_id: "prod_sem" quantidade: 999 pedido_id: "ped_2" }
62
- expect { sucesso: falso }
63
- error { tipo: "estoque_insuficiente" }
64
- }
65
- }
66
- }
67
-
68
- task registrar_entrada {
69
- input {
70
- produto_id: Id required
71
- quantidade: Inteiro required
72
- motivo: Texto required
73
- }
74
- output {
75
- movimentacao_id: Id
76
- }
77
- rules {
78
- quantidade > 0
79
- motivo deve_ser preenchido
80
- }
81
- effects {
82
- persistencia ItemEstoque
83
- persistencia MovimentacaoEstoque
84
- evento estoque_reposto
85
- auditoria entrada_estoque
86
- }
87
- guarantees {
88
- movimentacao_id existe
89
- }
90
- tests {
91
- caso "entrada valida" {
92
- given { produto_id: "prod_1" quantidade: 100 motivo: "Reposicao mensal" }
93
- expect { sucesso: verdadeiro }
94
- }
95
- }
96
- }
97
-
98
- task liberar_reserva {
99
- input {
100
- reserva_id: Id required
101
- motivo: Texto required
102
- }
103
- output {
104
- protocolo: Id
105
- }
106
- rules {
107
- reserva_id deve_ser valido
108
- motivo deve_ser preenchido
109
- }
110
- effects {
111
- persistencia ItemEstoque
112
- persistencia MovimentacaoEstoque
113
- evento reserva_liberada
114
- auditoria liberacao_reserva
115
- }
116
- guarantees {
117
- protocolo existe
118
- }
119
- tests {
120
- caso "libera reserva existente" {
121
- given { reserva_id: "res_1" motivo: "Pedido cancelado" }
122
- expect { sucesso: verdadeiro }
123
- }
124
- }
125
- }
126
- }
@@ -1,94 +0,0 @@
1
- module exemplos.exportacao {
2
- docs {
3
- resumo: "Exportacao de dados em multiplos formatos com controle de acesso e rastreamento."
4
- }
5
-
6
- entity ExportacaoDados {
7
- fields {
8
- id: Id
9
- tipo: Texto
10
- formato: Texto
11
- filtros: Objeto
12
- total_registros: Inteiro
13
- url_arquivo: Texto
14
- status: Texto
15
- solicitado_por: Id
16
- expira_em: Timestamp
17
- }
18
- }
19
-
20
- task solicitar_exportacao {
21
- input {
22
- tipo: Texto required
23
- formato: Texto required
24
- filtros: Objeto
25
- }
26
- output {
27
- exportacao_id: Id
28
- }
29
- rules {
30
- tipo em [USUARIOS, PEDIDOS, FINANCEIRO, ESTOQUE]
31
- formato em [CSV, XLSX, JSON]
32
- }
33
- effects {
34
- persistencia ExportacaoDados
35
- evento exportacao_solicitada criticidade = media
36
- auditoria solicitacao_exportacao criticidade = media
37
- }
38
- state ciclo_exportacao {
39
- transitions {
40
- PENDENTE -> EM_PROCESSAMENTO
41
- }
42
- }
43
- guarantees {
44
- exportacao_id existe
45
- }
46
- error {
47
- tipo_invalido: "Tipo de exportacao nao suportado."
48
- formato_invalido: "Formato de arquivo nao suportado."
49
- permissao_negada: "Sem permissao para exportar este tipo de dado."
50
- }
51
- tests {
52
- caso "solicita exportacao de usuarios em csv" {
53
- given { tipo: "USUARIOS" formato: "CSV" }
54
- expect { sucesso: verdadeiro }
55
- }
56
- }
57
- }
58
-
59
- task concluir_exportacao {
60
- input {
61
- exportacao_id: Id required
62
- url_arquivo: Texto required
63
- total_registros: Inteiro required
64
- }
65
- output {
66
- protocolo: Id
67
- }
68
- rules {
69
- exportacao_id deve_ser valido
70
- url_arquivo deve_ser preenchida
71
- total_registros >= 0
72
- }
73
- effects {
74
- persistencia ExportacaoDados
75
- notificacao usuario exportacao_pronta criticidade = media
76
- evento exportacao_concluida
77
- auditoria conclusao_exportacao
78
- }
79
- state ciclo_exportacao {
80
- transitions {
81
- EM_PROCESSAMENTO -> DISPONIVEL
82
- }
83
- }
84
- guarantees {
85
- protocolo existe
86
- }
87
- tests {
88
- caso "conclui exportacao" {
89
- given { exportacao_id: "exp_1" url_arquivo: "https://storage/exp_1.csv" total_registros: 1500 }
90
- expect { sucesso: verdadeiro }
91
- }
92
- }
93
- }
94
- }