@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.
- package/AGENTS.md +268 -260
- package/LICENSE +22 -22
- package/README.md +144 -104
- package/SEMA_BRIEF.curto.txt +7 -5
- package/SEMA_BRIEF.md +61 -5
- package/SEMA_BRIEF.micro.txt +6 -4
- package/SEMA_INDEX.json +991 -47
- package/dist/controleComercialSupabase.d.ts +326 -0
- package/dist/controleComercialSupabase.js +310 -0
- package/dist/controleComercialSupabase.js.map +1 -0
- package/dist/docs.js +48 -20
- package/dist/docs.js.map +1 -1
- package/dist/drift.d.ts +5 -3
- package/dist/drift.js +123 -14
- package/dist/drift.js.map +1 -1
- package/dist/index.js +1889 -38
- package/dist/index.js.map +1 -1
- package/dist/mcpRemoto.d.ts +32 -0
- package/dist/mcpRemoto.js +61 -0
- package/dist/mcpRemoto.js.map +1 -0
- package/dist/projeto.js +3 -1
- package/dist/projeto.js.map +1 -1
- package/docs/AGENT_STARTER.md +103 -97
- package/docs/cli.md +175 -106
- package/docs/como-ensinar-a-sema-para-ia.md +41 -35
- package/docs/deploy.md +231 -43
- package/docs/documentacao.md +61 -36
- package/docs/env.md +105 -56
- package/docs/extensao-vscode.md +12 -4
- package/docs/fluxo-pratico-ia-sema.md +182 -176
- package/docs/instalacao-e-primeiro-uso.md +52 -30
- package/docs/integracao-com-ia.md +108 -101
- package/docs/mcp.md +292 -51
- package/docs/pagamento-ponta-a-ponta.md +34 -28
- package/docs/persistencia-vendor-first.md +11 -5
- package/docs/prompt-base-ia-sema.md +13 -7
- package/docs/rollback.md +17 -15
- package/docs/sintaxe.md +180 -174
- package/exemplos/agendamento.sema +105 -105
- package/exemplos/assinatura.sema +133 -133
- package/exemplos/auditoria.sema +89 -89
- package/exemplos/autenticacao.sema +125 -125
- package/exemplos/author_obra_comum.sema +294 -0
- package/exemplos/author_tema_sensivel.sema +264 -0
- package/exemplos/automacao.sema +107 -107
- package/exemplos/cadastro_usuario.sema +54 -54
- package/exemplos/calculadora.sema +78 -78
- package/exemplos/crud_simples.sema +89 -89
- package/exemplos/estoque.sema +127 -127
- package/exemplos/exportacao.sema +94 -94
- package/exemplos/fila.sema +130 -130
- package/exemplos/integracao_externa.sema +94 -94
- package/exemplos/multi_tenant.sema +140 -140
- package/exemplos/notificacao.sema +149 -149
- package/exemplos/operacao_estrategia.sema +633 -633
- package/exemplos/pagamento.sema +434 -434
- package/exemplos/pagamento_dominio.sema +35 -35
- package/exemplos/pedido.sema +255 -255
- package/exemplos/permissao.sema +121 -121
- package/exemplos/persistencia_vendor_first.sema +86 -86
- package/exemplos/profile_game.sema +114 -0
- package/exemplos/profile_legal.sema +105 -0
- package/exemplos/profile_ops.sema +110 -0
- package/exemplos/profile_research.sema +104 -0
- package/exemplos/profile_software.sema +123 -0
- package/exemplos/profile_workflow_n8n.sema +99 -0
- package/exemplos/relatorio.sema +93 -93
- package/exemplos/replica_analitica_erp.sema +160 -160
- package/exemplos/testes_embutidos.sema +45 -45
- package/exemplos/tratamento_erro.sema +157 -157
- package/exemplos/upload_arquivo.sema +93 -93
- package/exemplos/webhook.sema +94 -94
- package/llms-full.txt +34 -34
- package/llms.txt +17 -17
- package/node_modules/@sema/gerador-css/dist/index.js +563 -563
- package/node_modules/@sema/gerador-css/package.json +1 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-html/dist/index.js +90 -90
- package/node_modules/@sema/gerador-html/package.json +1 -1
- package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
- package/node_modules/@sema/gerador-javascript/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/dist/index.js +122 -96
- package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/formatador/index.js +12 -4
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +11 -11
package/exemplos/permissao.sema
CHANGED
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
module exemplos.permissao {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Controle de acesso baseado em papeis e permissoes granulares."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
entity Papel {
|
|
7
|
-
fields {
|
|
8
|
-
id: Id
|
|
9
|
-
nome: Texto
|
|
10
|
-
descricao: Texto
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
entity Permissao {
|
|
15
|
-
fields {
|
|
16
|
-
id: Id
|
|
17
|
-
recurso: Texto
|
|
18
|
-
acao: Texto
|
|
19
|
-
descricao: Texto
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
task atribuir_papel {
|
|
24
|
-
input {
|
|
25
|
-
usuario_id: Id required
|
|
26
|
-
papel_id: Id required
|
|
27
|
-
}
|
|
28
|
-
output {
|
|
29
|
-
atribuicao_id: Id
|
|
30
|
-
}
|
|
31
|
-
rules {
|
|
32
|
-
usuario_id deve_ser valido
|
|
33
|
-
papel_id deve_ser valido
|
|
34
|
-
}
|
|
35
|
-
effects {
|
|
36
|
-
consulta Usuario por usuario_id
|
|
37
|
-
consulta Papel por papel_id
|
|
38
|
-
persistencia AtribuicaoPapel
|
|
39
|
-
evento papel_atribuido criticidade = media
|
|
40
|
-
auditoria atribuicao_papel criticidade = alta
|
|
41
|
-
}
|
|
42
|
-
guarantees {
|
|
43
|
-
atribuicao_id existe
|
|
44
|
-
}
|
|
45
|
-
error {
|
|
46
|
-
usuario_nao_encontrado: "Usuario nao localizado."
|
|
47
|
-
papel_nao_encontrado: "Papel nao localizado."
|
|
48
|
-
atribuicao_duplicada: "Usuario ja possui este papel."
|
|
49
|
-
}
|
|
50
|
-
tests {
|
|
51
|
-
caso "atribui papel admin" {
|
|
52
|
-
given { usuario_id: "usr_1" papel_id: "papel_admin" }
|
|
53
|
-
expect { sucesso: verdadeiro }
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
task verificar_permissao {
|
|
59
|
-
input {
|
|
60
|
-
usuario_id: Id required
|
|
61
|
-
recurso: Texto required
|
|
62
|
-
acao: Texto required
|
|
63
|
-
}
|
|
64
|
-
output {
|
|
65
|
-
autorizado: Booleano
|
|
66
|
-
}
|
|
67
|
-
rules {
|
|
68
|
-
usuario_id deve_ser valido
|
|
69
|
-
recurso deve_ser preenchido
|
|
70
|
-
acao deve_ser preenchida
|
|
71
|
-
}
|
|
72
|
-
effects {
|
|
73
|
-
consulta AtribuicaoPapel por usuario_id
|
|
74
|
-
consulta PermissaoPapel por papel_id
|
|
75
|
-
auditoria verificacao_permissao
|
|
76
|
-
}
|
|
77
|
-
guarantees {
|
|
78
|
-
autorizado existe
|
|
79
|
-
}
|
|
80
|
-
tests {
|
|
81
|
-
caso "usuario autorizado" {
|
|
82
|
-
given { usuario_id: "usr_admin" recurso: "relatorios" acao: "exportar" }
|
|
83
|
-
expect { sucesso: verdadeiro }
|
|
84
|
-
}
|
|
85
|
-
caso "usuario sem permissao" {
|
|
86
|
-
given { usuario_id: "usr_basico" recurso: "admin" acao: "deletar" }
|
|
87
|
-
expect { sucesso: verdadeiro }
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
task revogar_papel {
|
|
93
|
-
input {
|
|
94
|
-
usuario_id: Id required
|
|
95
|
-
papel_id: Id required
|
|
96
|
-
motivo: Texto required
|
|
97
|
-
}
|
|
98
|
-
output {
|
|
99
|
-
protocolo: Id
|
|
100
|
-
}
|
|
101
|
-
rules {
|
|
102
|
-
usuario_id deve_ser valido
|
|
103
|
-
papel_id deve_ser valido
|
|
104
|
-
motivo deve_ser preenchido
|
|
105
|
-
}
|
|
106
|
-
effects {
|
|
107
|
-
persistencia AtribuicaoPapel
|
|
108
|
-
evento papel_revogado criticidade = alta
|
|
109
|
-
auditoria revogacao_papel criticidade = alta
|
|
110
|
-
}
|
|
111
|
-
guarantees {
|
|
112
|
-
protocolo existe
|
|
113
|
-
}
|
|
114
|
-
tests {
|
|
115
|
-
caso "revoga papel" {
|
|
116
|
-
given { usuario_id: "usr_1" papel_id: "papel_admin" motivo: "Saida da equipe" }
|
|
117
|
-
expect { sucesso: verdadeiro }
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
1
|
+
module exemplos.permissao {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Controle de acesso baseado em papeis e permissoes granulares."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
entity Papel {
|
|
7
|
+
fields {
|
|
8
|
+
id: Id
|
|
9
|
+
nome: Texto
|
|
10
|
+
descricao: Texto
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
entity Permissao {
|
|
15
|
+
fields {
|
|
16
|
+
id: Id
|
|
17
|
+
recurso: Texto
|
|
18
|
+
acao: Texto
|
|
19
|
+
descricao: Texto
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
task atribuir_papel {
|
|
24
|
+
input {
|
|
25
|
+
usuario_id: Id required
|
|
26
|
+
papel_id: Id required
|
|
27
|
+
}
|
|
28
|
+
output {
|
|
29
|
+
atribuicao_id: Id
|
|
30
|
+
}
|
|
31
|
+
rules {
|
|
32
|
+
usuario_id deve_ser valido
|
|
33
|
+
papel_id deve_ser valido
|
|
34
|
+
}
|
|
35
|
+
effects {
|
|
36
|
+
consulta Usuario por usuario_id
|
|
37
|
+
consulta Papel por papel_id
|
|
38
|
+
persistencia AtribuicaoPapel
|
|
39
|
+
evento papel_atribuido criticidade = media
|
|
40
|
+
auditoria atribuicao_papel criticidade = alta
|
|
41
|
+
}
|
|
42
|
+
guarantees {
|
|
43
|
+
atribuicao_id existe
|
|
44
|
+
}
|
|
45
|
+
error {
|
|
46
|
+
usuario_nao_encontrado: "Usuario nao localizado."
|
|
47
|
+
papel_nao_encontrado: "Papel nao localizado."
|
|
48
|
+
atribuicao_duplicada: "Usuario ja possui este papel."
|
|
49
|
+
}
|
|
50
|
+
tests {
|
|
51
|
+
caso "atribui papel admin" {
|
|
52
|
+
given { usuario_id: "usr_1" papel_id: "papel_admin" }
|
|
53
|
+
expect { sucesso: verdadeiro }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
task verificar_permissao {
|
|
59
|
+
input {
|
|
60
|
+
usuario_id: Id required
|
|
61
|
+
recurso: Texto required
|
|
62
|
+
acao: Texto required
|
|
63
|
+
}
|
|
64
|
+
output {
|
|
65
|
+
autorizado: Booleano
|
|
66
|
+
}
|
|
67
|
+
rules {
|
|
68
|
+
usuario_id deve_ser valido
|
|
69
|
+
recurso deve_ser preenchido
|
|
70
|
+
acao deve_ser preenchida
|
|
71
|
+
}
|
|
72
|
+
effects {
|
|
73
|
+
consulta AtribuicaoPapel por usuario_id
|
|
74
|
+
consulta PermissaoPapel por papel_id
|
|
75
|
+
auditoria verificacao_permissao
|
|
76
|
+
}
|
|
77
|
+
guarantees {
|
|
78
|
+
autorizado existe
|
|
79
|
+
}
|
|
80
|
+
tests {
|
|
81
|
+
caso "usuario autorizado" {
|
|
82
|
+
given { usuario_id: "usr_admin" recurso: "relatorios" acao: "exportar" }
|
|
83
|
+
expect { sucesso: verdadeiro }
|
|
84
|
+
}
|
|
85
|
+
caso "usuario sem permissao" {
|
|
86
|
+
given { usuario_id: "usr_basico" recurso: "admin" acao: "deletar" }
|
|
87
|
+
expect { sucesso: verdadeiro }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
task revogar_papel {
|
|
93
|
+
input {
|
|
94
|
+
usuario_id: Id required
|
|
95
|
+
papel_id: Id required
|
|
96
|
+
motivo: Texto required
|
|
97
|
+
}
|
|
98
|
+
output {
|
|
99
|
+
protocolo: Id
|
|
100
|
+
}
|
|
101
|
+
rules {
|
|
102
|
+
usuario_id deve_ser valido
|
|
103
|
+
papel_id deve_ser valido
|
|
104
|
+
motivo deve_ser preenchido
|
|
105
|
+
}
|
|
106
|
+
effects {
|
|
107
|
+
persistencia AtribuicaoPapel
|
|
108
|
+
evento papel_revogado criticidade = alta
|
|
109
|
+
auditoria revogacao_papel criticidade = alta
|
|
110
|
+
}
|
|
111
|
+
guarantees {
|
|
112
|
+
protocolo existe
|
|
113
|
+
}
|
|
114
|
+
tests {
|
|
115
|
+
caso "revoga papel" {
|
|
116
|
+
given { usuario_id: "usr_1" papel_id: "papel_admin" motivo: "Saida da equipe" }
|
|
117
|
+
expect { sucesso: verdadeiro }
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
module exemplos.persistencia.vendor_first {
|
|
2
|
-
database principal_postgres {
|
|
3
|
-
engine: postgres
|
|
4
|
-
schema: public
|
|
5
|
-
consistency: forte
|
|
6
|
-
durability: alta
|
|
7
|
-
transaction_model: mvcc
|
|
8
|
-
query_model: sql
|
|
9
|
-
capabilities {
|
|
10
|
-
joins
|
|
11
|
-
views
|
|
12
|
-
}
|
|
13
|
-
table pedidos {
|
|
14
|
-
entity: Pedido
|
|
15
|
-
}
|
|
16
|
-
relationship pedido_cliente {
|
|
17
|
-
from: Pedido
|
|
18
|
-
to: Cliente
|
|
19
|
-
}
|
|
20
|
-
query buscar_pedidos {
|
|
21
|
-
mode: sql
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
database principal_mysql {
|
|
26
|
-
engine: mysql
|
|
27
|
-
consistency: forte
|
|
28
|
-
durability: alta
|
|
29
|
-
transaction_model: bloqueio
|
|
30
|
-
query_model: sql
|
|
31
|
-
table faturamento {
|
|
32
|
-
table: faturamento
|
|
33
|
-
}
|
|
34
|
-
query buscar_faturas {
|
|
35
|
-
mode: sql
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
database principal_sqlite {
|
|
40
|
-
engine: sqlite
|
|
41
|
-
consistency: snapshot
|
|
42
|
-
durability: media
|
|
43
|
-
transaction_model: single_thread
|
|
44
|
-
query_model: sql
|
|
45
|
-
table cache_local {
|
|
46
|
-
table: cache_local
|
|
47
|
-
}
|
|
48
|
-
retention limpeza_local {
|
|
49
|
-
retention: 7d
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
database principal_mongodb {
|
|
54
|
-
engine: mongodb
|
|
55
|
-
consistency: eventual
|
|
56
|
-
durability: alta
|
|
57
|
-
transaction_model: documento
|
|
58
|
-
query_model: documento
|
|
59
|
-
collection pedidos {
|
|
60
|
-
collection: pedidos
|
|
61
|
-
}
|
|
62
|
-
document pedido_snapshot {
|
|
63
|
-
entity: PedidoSnapshot
|
|
64
|
-
}
|
|
65
|
-
query pipeline_pedido {
|
|
66
|
-
mode: pipeline
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
database principal_redis {
|
|
71
|
-
engine: redis
|
|
72
|
-
consistency: eventual
|
|
73
|
-
durability: media
|
|
74
|
-
transaction_model: single_thread
|
|
75
|
-
query_model: chave_valor
|
|
76
|
-
keyspace cache_pedidos {
|
|
77
|
-
ttl: 300s
|
|
78
|
-
}
|
|
79
|
-
stream eventos_pedido {
|
|
80
|
-
surface: fila
|
|
81
|
-
}
|
|
82
|
-
retention expurgo_cache {
|
|
83
|
-
retention: 300s
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
1
|
+
module exemplos.persistencia.vendor_first {
|
|
2
|
+
database principal_postgres {
|
|
3
|
+
engine: postgres
|
|
4
|
+
schema: public
|
|
5
|
+
consistency: forte
|
|
6
|
+
durability: alta
|
|
7
|
+
transaction_model: mvcc
|
|
8
|
+
query_model: sql
|
|
9
|
+
capabilities {
|
|
10
|
+
joins
|
|
11
|
+
views
|
|
12
|
+
}
|
|
13
|
+
table pedidos {
|
|
14
|
+
entity: Pedido
|
|
15
|
+
}
|
|
16
|
+
relationship pedido_cliente {
|
|
17
|
+
from: Pedido
|
|
18
|
+
to: Cliente
|
|
19
|
+
}
|
|
20
|
+
query buscar_pedidos {
|
|
21
|
+
mode: sql
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
database principal_mysql {
|
|
26
|
+
engine: mysql
|
|
27
|
+
consistency: forte
|
|
28
|
+
durability: alta
|
|
29
|
+
transaction_model: bloqueio
|
|
30
|
+
query_model: sql
|
|
31
|
+
table faturamento {
|
|
32
|
+
table: faturamento
|
|
33
|
+
}
|
|
34
|
+
query buscar_faturas {
|
|
35
|
+
mode: sql
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
database principal_sqlite {
|
|
40
|
+
engine: sqlite
|
|
41
|
+
consistency: snapshot
|
|
42
|
+
durability: media
|
|
43
|
+
transaction_model: single_thread
|
|
44
|
+
query_model: sql
|
|
45
|
+
table cache_local {
|
|
46
|
+
table: cache_local
|
|
47
|
+
}
|
|
48
|
+
retention limpeza_local {
|
|
49
|
+
retention: 7d
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
database principal_mongodb {
|
|
54
|
+
engine: mongodb
|
|
55
|
+
consistency: eventual
|
|
56
|
+
durability: alta
|
|
57
|
+
transaction_model: documento
|
|
58
|
+
query_model: documento
|
|
59
|
+
collection pedidos {
|
|
60
|
+
collection: pedidos
|
|
61
|
+
}
|
|
62
|
+
document pedido_snapshot {
|
|
63
|
+
entity: PedidoSnapshot
|
|
64
|
+
}
|
|
65
|
+
query pipeline_pedido {
|
|
66
|
+
mode: pipeline
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
database principal_redis {
|
|
71
|
+
engine: redis
|
|
72
|
+
consistency: eventual
|
|
73
|
+
durability: media
|
|
74
|
+
transaction_model: single_thread
|
|
75
|
+
query_model: chave_valor
|
|
76
|
+
keyspace cache_pedidos {
|
|
77
|
+
ttl: 300s
|
|
78
|
+
}
|
|
79
|
+
stream eventos_pedido {
|
|
80
|
+
surface: fila
|
|
81
|
+
}
|
|
82
|
+
retention expurgo_cache {
|
|
83
|
+
retention: 300s
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
module exemplos.profile.game {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Starter do Profile Game: contrato primeiro. Criar, editar ou remover contrato antes de qualquer acao; depois loop jogavel, jogador, estado, state, regras, transicoes, falha, derrota, balanceamento, abuso, exploit, telemetria, replay e metricas."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
state partida_status {
|
|
7
|
+
fields {
|
|
8
|
+
estado: StatusPartida
|
|
9
|
+
}
|
|
10
|
+
invariants {
|
|
11
|
+
estado existe
|
|
12
|
+
}
|
|
13
|
+
transitions {
|
|
14
|
+
PREPARANDO -> EM_JOGO
|
|
15
|
+
EM_JOGO -> VITORIA
|
|
16
|
+
EM_JOGO -> DERROTA
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
enum StatusPartida {
|
|
21
|
+
PREPARANDO,
|
|
22
|
+
EM_JOGO,
|
|
23
|
+
VITORIA,
|
|
24
|
+
DERROTA
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type LoopJogo {
|
|
28
|
+
fields {
|
|
29
|
+
objetivo: Texto
|
|
30
|
+
jogador: Texto
|
|
31
|
+
estado: Texto
|
|
32
|
+
regras: Lista
|
|
33
|
+
telemetria: Lista
|
|
34
|
+
}
|
|
35
|
+
invariants {
|
|
36
|
+
objetivo existe
|
|
37
|
+
jogador existe
|
|
38
|
+
estado existe
|
|
39
|
+
regras existe
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
task validar_loop_jogavel {
|
|
44
|
+
input {
|
|
45
|
+
loop: Texto required
|
|
46
|
+
jogador: Texto required
|
|
47
|
+
estado: Texto required
|
|
48
|
+
regras: Lista required
|
|
49
|
+
estado_state: Texto
|
|
50
|
+
transicoes: Texto
|
|
51
|
+
falha: Texto
|
|
52
|
+
derrota: Texto
|
|
53
|
+
balanceamento: Texto
|
|
54
|
+
abuso: Texto
|
|
55
|
+
exploit: Texto
|
|
56
|
+
telemetria: Texto
|
|
57
|
+
replay: Texto
|
|
58
|
+
metricas: Texto
|
|
59
|
+
}
|
|
60
|
+
output {
|
|
61
|
+
jogavel: Booleano
|
|
62
|
+
bloqueios: Lista
|
|
63
|
+
}
|
|
64
|
+
rules {
|
|
65
|
+
loop deve_ser jogavel
|
|
66
|
+
jogador deve_ser declarado
|
|
67
|
+
estado deve_ser persistente
|
|
68
|
+
estado_state deve_ser explicito
|
|
69
|
+
regras deve_ser testaveis
|
|
70
|
+
transicoes deve_ser declaradas
|
|
71
|
+
falha deve_ser possivel
|
|
72
|
+
derrota deve_ser legivel
|
|
73
|
+
balanceamento deve_ser testavel
|
|
74
|
+
abuso deve_ser mapeado
|
|
75
|
+
exploit deve_ser bloqueado
|
|
76
|
+
telemetria deve_ser declarada
|
|
77
|
+
replay deve_ser opcional
|
|
78
|
+
metricas deve_ser coletaveis
|
|
79
|
+
}
|
|
80
|
+
effects {
|
|
81
|
+
evento game_loop_validado criticidade = baixa
|
|
82
|
+
auditoria game_loop criticidade = media
|
|
83
|
+
}
|
|
84
|
+
forbidden {
|
|
85
|
+
vitoria_sem_custo
|
|
86
|
+
exploit_sem_mitigacao
|
|
87
|
+
falha_invisivel
|
|
88
|
+
}
|
|
89
|
+
execucao {
|
|
90
|
+
idempotencia: verdadeiro
|
|
91
|
+
timeout: "10s"
|
|
92
|
+
criticidade_operacional: media
|
|
93
|
+
}
|
|
94
|
+
guarantees {
|
|
95
|
+
jogavel existe
|
|
96
|
+
bloqueios existe
|
|
97
|
+
}
|
|
98
|
+
tests {
|
|
99
|
+
caso "loop tem estado e falha" {
|
|
100
|
+
given {
|
|
101
|
+
loop: "explorar, escolher risco, resolver encontro"
|
|
102
|
+
jogador: "piloto"
|
|
103
|
+
estado: "energia e mapa"
|
|
104
|
+
regras: "transicoes PREPARANDO EM_JOGO DERROTA"
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
expect {
|
|
108
|
+
sucesso: verdadeiro
|
|
109
|
+
jogavel: verdadeiro
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
module exemplos.profile.legal {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Starter do Profile Legal: contrato primeiro. Criar, editar ou remover contrato antes de qualquer acao; depois jurisdicao, escopo, limite, fonte normativa, lei, regulamento, documento, citacao, evidencia, revisao_humana, advogado, aprovador, bloqueio, auditoria, retencao, correlacao e motivo."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
type ContextoLegal {
|
|
7
|
+
fields {
|
|
8
|
+
jurisdicao: Texto
|
|
9
|
+
escopo: Texto
|
|
10
|
+
limite: Texto
|
|
11
|
+
fontes: Lista
|
|
12
|
+
revisao_humana: Booleano
|
|
13
|
+
}
|
|
14
|
+
invariants {
|
|
15
|
+
jurisdicao existe
|
|
16
|
+
escopo existe
|
|
17
|
+
limite existe
|
|
18
|
+
fontes existe
|
|
19
|
+
revisao_humana existe
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
task validar_minuta_legal {
|
|
24
|
+
input {
|
|
25
|
+
jurisdicao: Texto required
|
|
26
|
+
escopo: Texto required
|
|
27
|
+
fonte: Texto required
|
|
28
|
+
documento: Texto required
|
|
29
|
+
limite: Texto
|
|
30
|
+
norma: Texto
|
|
31
|
+
lei: Texto
|
|
32
|
+
regulamento: Texto
|
|
33
|
+
citacao: Texto
|
|
34
|
+
evidencia: Texto
|
|
35
|
+
revisao_humana: Texto
|
|
36
|
+
advogado: Texto
|
|
37
|
+
}
|
|
38
|
+
output {
|
|
39
|
+
aprovado: Booleano
|
|
40
|
+
bloqueio: Lista
|
|
41
|
+
}
|
|
42
|
+
rules {
|
|
43
|
+
jurisdicao deve_ser declarada
|
|
44
|
+
escopo deve_ser limitado
|
|
45
|
+
limite deve_ser explicito
|
|
46
|
+
fonte deve_ser normativa
|
|
47
|
+
norma deve_ser verificavel
|
|
48
|
+
lei deve_ser citavel
|
|
49
|
+
regulamento deve_ser citavel
|
|
50
|
+
documento deve_ser anexado
|
|
51
|
+
citacao deve_ser rastreavel
|
|
52
|
+
evidencia deve_ser preservada
|
|
53
|
+
revisao_humana deve_ser obrigatoria
|
|
54
|
+
advogado deve_ser aprovador
|
|
55
|
+
}
|
|
56
|
+
effects {
|
|
57
|
+
auditoria legal_minuta criticidade = media
|
|
58
|
+
}
|
|
59
|
+
authz {
|
|
60
|
+
escopo: legal.validar_minuta
|
|
61
|
+
tenant: opcional
|
|
62
|
+
}
|
|
63
|
+
dados {
|
|
64
|
+
classificacao_padrao: interno
|
|
65
|
+
redacao_log: obrigatoria
|
|
66
|
+
}
|
|
67
|
+
audit {
|
|
68
|
+
evento: exemplos.legal.minuta.validada
|
|
69
|
+
ator: advogado
|
|
70
|
+
correlacao: request_id
|
|
71
|
+
retencao: "180d"
|
|
72
|
+
motivo: obrigatorio
|
|
73
|
+
}
|
|
74
|
+
forbidden {
|
|
75
|
+
parecer_final_sem_revisao_humana
|
|
76
|
+
citacao_inventada
|
|
77
|
+
orientacao_juridica_sem_limite
|
|
78
|
+
}
|
|
79
|
+
execucao {
|
|
80
|
+
idempotencia: verdadeiro
|
|
81
|
+
timeout: "20s"
|
|
82
|
+
retry: "nenhum"
|
|
83
|
+
criticidade_operacional: media
|
|
84
|
+
}
|
|
85
|
+
guarantees {
|
|
86
|
+
aprovado existe
|
|
87
|
+
bloqueio existe
|
|
88
|
+
}
|
|
89
|
+
tests {
|
|
90
|
+
caso "minuta exige fonte e humano" {
|
|
91
|
+
given {
|
|
92
|
+
jurisdicao: "BR"
|
|
93
|
+
escopo: "contrato comercial"
|
|
94
|
+
fonte: "lei e regulamento"
|
|
95
|
+
documento: "documento com citacao e evidencia"
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
expect {
|
|
99
|
+
sucesso: verdadeiro
|
|
100
|
+
aprovado: verdadeiro
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|