@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.
- 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 +60 -4
- package/SEMA_BRIEF.micro.txt +6 -4
- package/SEMA_INDEX.json +917 -41
- 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
|
@@ -1,160 +1,160 @@
|
|
|
1
|
-
module exemplos.replica.analitica_erp {
|
|
2
|
-
docs {
|
|
3
|
-
resumo: "Exemplo publico neutro de replica analitica ERP para banco analytics: agente pode consultar a origem operacional em modo leitura e persistir apenas no destino analitico."
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
database erp_origem_mariadb {
|
|
7
|
-
engine: mysql
|
|
8
|
-
consistency: forte
|
|
9
|
-
durability: alta
|
|
10
|
-
transaction_model: bloqueio
|
|
11
|
-
query_model: sql
|
|
12
|
-
capabilities {
|
|
13
|
-
read_only
|
|
14
|
-
views
|
|
15
|
-
}
|
|
16
|
-
table vendas_operacionais {
|
|
17
|
-
entity: VendaOperacional
|
|
18
|
-
}
|
|
19
|
-
query extrair_vendas {
|
|
20
|
-
mode: sql
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
database analytics_postgres {
|
|
25
|
-
engine: postgres
|
|
26
|
-
schema: public
|
|
27
|
-
consistency: eventual
|
|
28
|
-
durability: alta
|
|
29
|
-
transaction_model: mvcc
|
|
30
|
-
query_model: sql
|
|
31
|
-
capabilities {
|
|
32
|
-
upsert
|
|
33
|
-
views
|
|
34
|
-
}
|
|
35
|
-
table vendas_analytics {
|
|
36
|
-
entity: VendaAnalitica
|
|
37
|
-
}
|
|
38
|
-
query carregar_vendas_analytics {
|
|
39
|
-
mode: sql
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
entity VendaOperacional {
|
|
44
|
-
fields {
|
|
45
|
-
id: Id
|
|
46
|
-
loja_id: Id
|
|
47
|
-
data_venda: Data
|
|
48
|
-
valor_total: Decimal
|
|
49
|
-
payload_origem: Objeto
|
|
50
|
-
}
|
|
51
|
-
invariants {
|
|
52
|
-
id existe
|
|
53
|
-
loja_id existe
|
|
54
|
-
data_venda existe
|
|
55
|
-
valor_total >= 0
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
entity VendaAnalitica {
|
|
60
|
-
fields {
|
|
61
|
-
id: Id
|
|
62
|
-
loja_id: Id
|
|
63
|
-
data_venda: Data
|
|
64
|
-
valor_total: Decimal
|
|
65
|
-
sincronizado_em: Timestamp
|
|
66
|
-
}
|
|
67
|
-
invariants {
|
|
68
|
-
id existe
|
|
69
|
-
loja_id existe
|
|
70
|
-
data_venda existe
|
|
71
|
-
valor_total >= 0
|
|
72
|
-
sincronizado_em existe
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
task sincronizar_vendas_erp_para_analytics {
|
|
77
|
-
input {
|
|
78
|
-
loja_id: Id required
|
|
79
|
-
periodo_inicio: Data required
|
|
80
|
-
periodo_fim: Data required
|
|
81
|
-
}
|
|
82
|
-
output {
|
|
83
|
-
registros_sincronizados: Inteiro
|
|
84
|
-
banco_producao_modificado: Booleano
|
|
85
|
-
sincronizado_em: Timestamp
|
|
86
|
-
}
|
|
87
|
-
authz {
|
|
88
|
-
escopo: analytics.replica.sincronizar
|
|
89
|
-
tenant: obrigatorio
|
|
90
|
-
}
|
|
91
|
-
dados {
|
|
92
|
-
classificacao_padrao: interno
|
|
93
|
-
redacao_log: obrigatoria
|
|
94
|
-
input {
|
|
95
|
-
loja_id: interno
|
|
96
|
-
periodo_inicio: interno
|
|
97
|
-
periodo_fim: interno
|
|
98
|
-
}
|
|
99
|
-
output {
|
|
100
|
-
registros_sincronizados: interno
|
|
101
|
-
banco_producao_modificado: interno
|
|
102
|
-
sincronizado_em: interno
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
audit {
|
|
106
|
-
evento: analytics.replica.erp_sincronizada
|
|
107
|
-
ator: sistema.analytics
|
|
108
|
-
correlacao: request_id
|
|
109
|
-
retencao: "180d"
|
|
110
|
-
motivo: obrigatorio
|
|
111
|
-
}
|
|
112
|
-
forbidden {
|
|
113
|
-
shell.exec
|
|
114
|
-
log.segredo
|
|
115
|
-
retorno.credencial
|
|
116
|
-
}
|
|
117
|
-
rules {
|
|
118
|
-
loja_id deve_ser valido
|
|
119
|
-
periodo_inicio deve_ser anterior_a periodo_fim
|
|
120
|
-
}
|
|
121
|
-
effects {
|
|
122
|
-
consulta erp_origem_mariadb criticidade = alta
|
|
123
|
-
persistencia analytics_postgres criticidade = media
|
|
124
|
-
auditoria sincronizacao_vendas criticidade = alta
|
|
125
|
-
}
|
|
126
|
-
vinculos {
|
|
127
|
-
recurso: erp_origem_mariadb
|
|
128
|
-
recurso: analytics_postgres
|
|
129
|
-
tabela: vendas_operacionais
|
|
130
|
-
tabela: vendas_analytics
|
|
131
|
-
}
|
|
132
|
-
execucao {
|
|
133
|
-
idempotencia: verdadeiro
|
|
134
|
-
timeout: "60s"
|
|
135
|
-
retry: "3x exponencial"
|
|
136
|
-
compensacao: "reexecutar_janela_analitica"
|
|
137
|
-
criticidade_operacional: alta
|
|
138
|
-
}
|
|
139
|
-
guarantees {
|
|
140
|
-
registros_sincronizados >= 0
|
|
141
|
-
banco_producao_modificado == falso
|
|
142
|
-
sincronizado_em existe
|
|
143
|
-
}
|
|
144
|
-
tests {
|
|
145
|
-
caso "sincroniza janela sem escrever na origem" {
|
|
146
|
-
given {
|
|
147
|
-
loja_id: "loja_001"
|
|
148
|
-
periodo_inicio: "2026-05-01"
|
|
149
|
-
periodo_fim: "2026-05-15"
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
expect {
|
|
153
|
-
sucesso: verdadeiro
|
|
154
|
-
registros_sincronizados: 42
|
|
155
|
-
banco_producao_modificado: falso
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
1
|
+
module exemplos.replica.analitica_erp {
|
|
2
|
+
docs {
|
|
3
|
+
resumo: "Exemplo publico neutro de replica analitica ERP para banco analytics: agente pode consultar a origem operacional em modo leitura e persistir apenas no destino analitico."
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
database erp_origem_mariadb {
|
|
7
|
+
engine: mysql
|
|
8
|
+
consistency: forte
|
|
9
|
+
durability: alta
|
|
10
|
+
transaction_model: bloqueio
|
|
11
|
+
query_model: sql
|
|
12
|
+
capabilities {
|
|
13
|
+
read_only
|
|
14
|
+
views
|
|
15
|
+
}
|
|
16
|
+
table vendas_operacionais {
|
|
17
|
+
entity: VendaOperacional
|
|
18
|
+
}
|
|
19
|
+
query extrair_vendas {
|
|
20
|
+
mode: sql
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
database analytics_postgres {
|
|
25
|
+
engine: postgres
|
|
26
|
+
schema: public
|
|
27
|
+
consistency: eventual
|
|
28
|
+
durability: alta
|
|
29
|
+
transaction_model: mvcc
|
|
30
|
+
query_model: sql
|
|
31
|
+
capabilities {
|
|
32
|
+
upsert
|
|
33
|
+
views
|
|
34
|
+
}
|
|
35
|
+
table vendas_analytics {
|
|
36
|
+
entity: VendaAnalitica
|
|
37
|
+
}
|
|
38
|
+
query carregar_vendas_analytics {
|
|
39
|
+
mode: sql
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
entity VendaOperacional {
|
|
44
|
+
fields {
|
|
45
|
+
id: Id
|
|
46
|
+
loja_id: Id
|
|
47
|
+
data_venda: Data
|
|
48
|
+
valor_total: Decimal
|
|
49
|
+
payload_origem: Objeto
|
|
50
|
+
}
|
|
51
|
+
invariants {
|
|
52
|
+
id existe
|
|
53
|
+
loja_id existe
|
|
54
|
+
data_venda existe
|
|
55
|
+
valor_total >= 0
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
entity VendaAnalitica {
|
|
60
|
+
fields {
|
|
61
|
+
id: Id
|
|
62
|
+
loja_id: Id
|
|
63
|
+
data_venda: Data
|
|
64
|
+
valor_total: Decimal
|
|
65
|
+
sincronizado_em: Timestamp
|
|
66
|
+
}
|
|
67
|
+
invariants {
|
|
68
|
+
id existe
|
|
69
|
+
loja_id existe
|
|
70
|
+
data_venda existe
|
|
71
|
+
valor_total >= 0
|
|
72
|
+
sincronizado_em existe
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
task sincronizar_vendas_erp_para_analytics {
|
|
77
|
+
input {
|
|
78
|
+
loja_id: Id required
|
|
79
|
+
periodo_inicio: Data required
|
|
80
|
+
periodo_fim: Data required
|
|
81
|
+
}
|
|
82
|
+
output {
|
|
83
|
+
registros_sincronizados: Inteiro
|
|
84
|
+
banco_producao_modificado: Booleano
|
|
85
|
+
sincronizado_em: Timestamp
|
|
86
|
+
}
|
|
87
|
+
authz {
|
|
88
|
+
escopo: analytics.replica.sincronizar
|
|
89
|
+
tenant: obrigatorio
|
|
90
|
+
}
|
|
91
|
+
dados {
|
|
92
|
+
classificacao_padrao: interno
|
|
93
|
+
redacao_log: obrigatoria
|
|
94
|
+
input {
|
|
95
|
+
loja_id: interno
|
|
96
|
+
periodo_inicio: interno
|
|
97
|
+
periodo_fim: interno
|
|
98
|
+
}
|
|
99
|
+
output {
|
|
100
|
+
registros_sincronizados: interno
|
|
101
|
+
banco_producao_modificado: interno
|
|
102
|
+
sincronizado_em: interno
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
audit {
|
|
106
|
+
evento: analytics.replica.erp_sincronizada
|
|
107
|
+
ator: sistema.analytics
|
|
108
|
+
correlacao: request_id
|
|
109
|
+
retencao: "180d"
|
|
110
|
+
motivo: obrigatorio
|
|
111
|
+
}
|
|
112
|
+
forbidden {
|
|
113
|
+
shell.exec
|
|
114
|
+
log.segredo
|
|
115
|
+
retorno.credencial
|
|
116
|
+
}
|
|
117
|
+
rules {
|
|
118
|
+
loja_id deve_ser valido
|
|
119
|
+
periodo_inicio deve_ser anterior_a periodo_fim
|
|
120
|
+
}
|
|
121
|
+
effects {
|
|
122
|
+
consulta erp_origem_mariadb criticidade = alta
|
|
123
|
+
persistencia analytics_postgres criticidade = media
|
|
124
|
+
auditoria sincronizacao_vendas criticidade = alta
|
|
125
|
+
}
|
|
126
|
+
vinculos {
|
|
127
|
+
recurso: erp_origem_mariadb
|
|
128
|
+
recurso: analytics_postgres
|
|
129
|
+
tabela: vendas_operacionais
|
|
130
|
+
tabela: vendas_analytics
|
|
131
|
+
}
|
|
132
|
+
execucao {
|
|
133
|
+
idempotencia: verdadeiro
|
|
134
|
+
timeout: "60s"
|
|
135
|
+
retry: "3x exponencial"
|
|
136
|
+
compensacao: "reexecutar_janela_analitica"
|
|
137
|
+
criticidade_operacional: alta
|
|
138
|
+
}
|
|
139
|
+
guarantees {
|
|
140
|
+
registros_sincronizados >= 0
|
|
141
|
+
banco_producao_modificado == falso
|
|
142
|
+
sincronizado_em existe
|
|
143
|
+
}
|
|
144
|
+
tests {
|
|
145
|
+
caso "sincroniza janela sem escrever na origem" {
|
|
146
|
+
given {
|
|
147
|
+
loja_id: "loja_001"
|
|
148
|
+
periodo_inicio: "2026-05-01"
|
|
149
|
+
periodo_fim: "2026-05-15"
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
expect {
|
|
153
|
+
sucesso: verdadeiro
|
|
154
|
+
registros_sincronizados: 42
|
|
155
|
+
banco_producao_modificado: falso
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
module exemplos.testes.embutidos {
|
|
2
|
-
task validar_documento {
|
|
3
|
-
input {
|
|
4
|
-
documento: Texto required
|
|
5
|
-
}
|
|
6
|
-
output {
|
|
7
|
-
valido: Booleano
|
|
8
|
-
motivo: Texto
|
|
9
|
-
}
|
|
10
|
-
rules {
|
|
11
|
-
documento deve_ser preenchido
|
|
12
|
-
}
|
|
13
|
-
effects {
|
|
14
|
-
auditoria validacao_documento
|
|
15
|
-
}
|
|
16
|
-
guarantees {
|
|
17
|
-
valido existe
|
|
18
|
-
motivo existe
|
|
19
|
-
}
|
|
20
|
-
tests {
|
|
21
|
-
caso "documento valido" {
|
|
22
|
-
given {
|
|
23
|
-
documento: 12345678900
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
expect {
|
|
27
|
-
sucesso: verdadeiro
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
caso "documento vazio" {
|
|
31
|
-
given {
|
|
32
|
-
documento: ""
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
expect {
|
|
36
|
-
sucesso: falso
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
error {
|
|
40
|
-
tipo: "entrada_invalida"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
module exemplos.testes.embutidos {
|
|
2
|
+
task validar_documento {
|
|
3
|
+
input {
|
|
4
|
+
documento: Texto required
|
|
5
|
+
}
|
|
6
|
+
output {
|
|
7
|
+
valido: Booleano
|
|
8
|
+
motivo: Texto
|
|
9
|
+
}
|
|
10
|
+
rules {
|
|
11
|
+
documento deve_ser preenchido
|
|
12
|
+
}
|
|
13
|
+
effects {
|
|
14
|
+
auditoria validacao_documento
|
|
15
|
+
}
|
|
16
|
+
guarantees {
|
|
17
|
+
valido existe
|
|
18
|
+
motivo existe
|
|
19
|
+
}
|
|
20
|
+
tests {
|
|
21
|
+
caso "documento valido" {
|
|
22
|
+
given {
|
|
23
|
+
documento: 12345678900
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
expect {
|
|
27
|
+
sucesso: verdadeiro
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
caso "documento vazio" {
|
|
31
|
+
given {
|
|
32
|
+
documento: ""
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
expect {
|
|
36
|
+
sucesso: falso
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
error {
|
|
40
|
+
tipo: "entrada_invalida"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|