@semacode/cli 1.5.18 → 1.5.19

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 +60 -4
  6. package/SEMA_BRIEF.micro.txt +6 -4
  7. package/SEMA_INDEX.json +917 -41
  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
@@ -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
+ }