@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
@@ -1,94 +1,94 @@
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
- }
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
+ }
@@ -1,130 +1,130 @@
1
- module exemplos.fila {
2
- docs {
3
- resumo: "Processamento de jobs em fila com retentativa e dead letter."
4
- }
5
-
6
- entity Job {
7
- fields {
8
- id: Id
9
- tipo: Texto
10
- payload: Objeto
11
- status: Texto
12
- tentativas: Inteiro
13
- max_tentativas: Inteiro
14
- agendado_para: Timestamp
15
- processado_em: Timestamp
16
- erro: Texto
17
- }
18
- }
19
-
20
- task enfileirar_job {
21
- input {
22
- tipo: Texto required
23
- payload: Objeto required
24
- agendado_para: Timestamp
25
- max_tentativas: Inteiro
26
- }
27
- output {
28
- job_id: Id
29
- }
30
- rules {
31
- tipo deve_ser preenchido
32
- max_tentativas <= 10
33
- }
34
- effects {
35
- persistencia Job
36
- evento job_enfileirado criticidade = baixa
37
- auditoria enfileiramento_job
38
- }
39
- state ciclo_job {
40
- transitions {
41
- CRIADO -> PENDENTE
42
- }
43
- }
44
- guarantees {
45
- job_id existe
46
- }
47
- error {
48
- tipo_invalido: "Tipo de job nao registrado."
49
- fila_cheia: "Fila atingiu capacidade maxima."
50
- }
51
- tests {
52
- caso "enfileira job valido" {
53
- given { tipo: "envio_email" payload: "destinatario:a@b.com" }
54
- expect { sucesso: verdadeiro }
55
- }
56
- }
57
- }
58
-
59
- task processar_job {
60
- input {
61
- job_id: Id required
62
- }
63
- output {
64
- resultado: Objeto
65
- }
66
- rules {
67
- job_id deve_ser valido
68
- }
69
- effects {
70
- persistencia Job
71
- evento job_processado criticidade = baixa
72
- auditoria processamento_job
73
- }
74
- state ciclo_job {
75
- transitions {
76
- PENDENTE -> EM_EXECUCAO
77
- EM_EXECUCAO -> CONCLUIDO
78
- EM_EXECUCAO -> FALHOU
79
- }
80
- }
81
- guarantees {
82
- resultado existe
83
- }
84
- error {
85
- job_nao_encontrado: "Job nao localizado na fila."
86
- job_ja_processado: "Este job ja foi executado."
87
- execucao_falhou: "Falha durante a execucao do job."
88
- }
89
- tests {
90
- caso "processa job pendente" {
91
- given { job_id: "job_1" }
92
- expect { sucesso: verdadeiro }
93
- }
94
- }
95
- }
96
-
97
- task mover_para_dead_letter {
98
- input {
99
- job_id: Id required
100
- motivo: Texto required
101
- }
102
- output {
103
- protocolo: Id
104
- }
105
- rules {
106
- job_id deve_ser valido
107
- motivo deve_ser preenchido
108
- }
109
- effects {
110
- persistencia Job
111
- evento job_dead_letter criticidade = alta
112
- notificacao operacao falha_critica_job criticidade = alta
113
- auditoria dead_letter criticidade = alta
114
- }
115
- state ciclo_job {
116
- transitions {
117
- FALHOU -> DEAD_LETTER
118
- }
119
- }
120
- guarantees {
121
- protocolo existe
122
- }
123
- tests {
124
- caso "move job esgotado" {
125
- given { job_id: "job_esgotado" motivo: "Timeout repetido" }
126
- expect { sucesso: verdadeiro }
127
- }
128
- }
129
- }
130
- }
1
+ module exemplos.fila {
2
+ docs {
3
+ resumo: "Processamento de jobs em fila com retentativa e dead letter."
4
+ }
5
+
6
+ entity Job {
7
+ fields {
8
+ id: Id
9
+ tipo: Texto
10
+ payload: Objeto
11
+ status: Texto
12
+ tentativas: Inteiro
13
+ max_tentativas: Inteiro
14
+ agendado_para: Timestamp
15
+ processado_em: Timestamp
16
+ erro: Texto
17
+ }
18
+ }
19
+
20
+ task enfileirar_job {
21
+ input {
22
+ tipo: Texto required
23
+ payload: Objeto required
24
+ agendado_para: Timestamp
25
+ max_tentativas: Inteiro
26
+ }
27
+ output {
28
+ job_id: Id
29
+ }
30
+ rules {
31
+ tipo deve_ser preenchido
32
+ max_tentativas <= 10
33
+ }
34
+ effects {
35
+ persistencia Job
36
+ evento job_enfileirado criticidade = baixa
37
+ auditoria enfileiramento_job
38
+ }
39
+ state ciclo_job {
40
+ transitions {
41
+ CRIADO -> PENDENTE
42
+ }
43
+ }
44
+ guarantees {
45
+ job_id existe
46
+ }
47
+ error {
48
+ tipo_invalido: "Tipo de job nao registrado."
49
+ fila_cheia: "Fila atingiu capacidade maxima."
50
+ }
51
+ tests {
52
+ caso "enfileira job valido" {
53
+ given { tipo: "envio_email" payload: "destinatario:a@b.com" }
54
+ expect { sucesso: verdadeiro }
55
+ }
56
+ }
57
+ }
58
+
59
+ task processar_job {
60
+ input {
61
+ job_id: Id required
62
+ }
63
+ output {
64
+ resultado: Objeto
65
+ }
66
+ rules {
67
+ job_id deve_ser valido
68
+ }
69
+ effects {
70
+ persistencia Job
71
+ evento job_processado criticidade = baixa
72
+ auditoria processamento_job
73
+ }
74
+ state ciclo_job {
75
+ transitions {
76
+ PENDENTE -> EM_EXECUCAO
77
+ EM_EXECUCAO -> CONCLUIDO
78
+ EM_EXECUCAO -> FALHOU
79
+ }
80
+ }
81
+ guarantees {
82
+ resultado existe
83
+ }
84
+ error {
85
+ job_nao_encontrado: "Job nao localizado na fila."
86
+ job_ja_processado: "Este job ja foi executado."
87
+ execucao_falhou: "Falha durante a execucao do job."
88
+ }
89
+ tests {
90
+ caso "processa job pendente" {
91
+ given { job_id: "job_1" }
92
+ expect { sucesso: verdadeiro }
93
+ }
94
+ }
95
+ }
96
+
97
+ task mover_para_dead_letter {
98
+ input {
99
+ job_id: Id required
100
+ motivo: Texto required
101
+ }
102
+ output {
103
+ protocolo: Id
104
+ }
105
+ rules {
106
+ job_id deve_ser valido
107
+ motivo deve_ser preenchido
108
+ }
109
+ effects {
110
+ persistencia Job
111
+ evento job_dead_letter criticidade = alta
112
+ notificacao operacao falha_critica_job criticidade = alta
113
+ auditoria dead_letter criticidade = alta
114
+ }
115
+ state ciclo_job {
116
+ transitions {
117
+ FALHOU -> DEAD_LETTER
118
+ }
119
+ }
120
+ guarantees {
121
+ protocolo existe
122
+ }
123
+ tests {
124
+ caso "move job esgotado" {
125
+ given { job_id: "job_esgotado" motivo: "Timeout repetido" }
126
+ expect { sucesso: verdadeiro }
127
+ }
128
+ }
129
+ }
130
+ }
@@ -1,94 +1,94 @@
1
- module exemplos.integracao.externa {
2
- docs {
3
- resumo: "Integracao com API externa com circuit breaker e fallback."
4
- }
5
-
6
- entity ChamadaExterna {
7
- fields {
8
- id: Id
9
- servico: Texto
10
- endpoint: Texto
11
- metodo: Texto
12
- status_http: Inteiro
13
- duracao_ms: Inteiro
14
- sucesso: Booleano
15
- realizada_em: Timestamp
16
- }
17
- }
18
-
19
- task consultar_cep {
20
- input {
21
- cep: Texto required
22
- }
23
- output {
24
- logradouro: Texto
25
- bairro: Texto
26
- cidade: Texto
27
- estado: Texto
28
- }
29
- rules {
30
- cep deve_ser formato_cep_valido
31
- }
32
- effects {
33
- consulta api_cep criticidade = media
34
- persistencia ChamadaExterna
35
- auditoria consulta_cep
36
- }
37
- guarantees {
38
- logradouro existe
39
- cidade existe
40
- estado existe
41
- }
42
- error {
43
- cep_nao_encontrado: "CEP nao localizado."
44
- servico_indisponivel: "API de CEP temporariamente indisponivel."
45
- formato_invalido: "CEP deve ter 8 digitos numericos."
46
- }
47
- tests {
48
- caso "consulta cep valido" {
49
- given { cep: "01310100" }
50
- expect { sucesso: verdadeiro }
51
- }
52
- caso "rejeita cep invalido" {
53
- given { cep: "00000000" }
54
- expect { sucesso: falso }
55
- error { tipo: "cep_nao_encontrado" }
56
- }
57
- }
58
- }
59
-
60
- task consultar_cnpj {
61
- input {
62
- cnpj: Texto required
63
- }
64
- output {
65
- razao_social: Texto
66
- situacao: Texto
67
- atividade_principal: Texto
68
- }
69
- rules {
70
- cnpj deve_ser formato_cnpj_valido
71
- cnpj deve_ser digitos_validos
72
- }
73
- effects {
74
- consulta api_receita criticidade = media
75
- persistencia ChamadaExterna
76
- auditoria consulta_cnpj
77
- }
78
- guarantees {
79
- razao_social existe
80
- situacao existe
81
- }
82
- error {
83
- cnpj_nao_encontrado: "CNPJ nao localizado na Receita Federal."
84
- servico_indisponivel: "Servico da Receita Federal indisponivel."
85
- formato_invalido: "CNPJ invalido."
86
- }
87
- tests {
88
- caso "consulta cnpj valido" {
89
- given { cnpj: "11222333000181" }
90
- expect { sucesso: verdadeiro }
91
- }
92
- }
93
- }
94
- }
1
+ module exemplos.integracao.externa {
2
+ docs {
3
+ resumo: "Integracao com API externa com circuit breaker e fallback."
4
+ }
5
+
6
+ entity ChamadaExterna {
7
+ fields {
8
+ id: Id
9
+ servico: Texto
10
+ endpoint: Texto
11
+ metodo: Texto
12
+ status_http: Inteiro
13
+ duracao_ms: Inteiro
14
+ sucesso: Booleano
15
+ realizada_em: Timestamp
16
+ }
17
+ }
18
+
19
+ task consultar_cep {
20
+ input {
21
+ cep: Texto required
22
+ }
23
+ output {
24
+ logradouro: Texto
25
+ bairro: Texto
26
+ cidade: Texto
27
+ estado: Texto
28
+ }
29
+ rules {
30
+ cep deve_ser formato_cep_valido
31
+ }
32
+ effects {
33
+ consulta api_cep criticidade = media
34
+ persistencia ChamadaExterna
35
+ auditoria consulta_cep
36
+ }
37
+ guarantees {
38
+ logradouro existe
39
+ cidade existe
40
+ estado existe
41
+ }
42
+ error {
43
+ cep_nao_encontrado: "CEP nao localizado."
44
+ servico_indisponivel: "API de CEP temporariamente indisponivel."
45
+ formato_invalido: "CEP deve ter 8 digitos numericos."
46
+ }
47
+ tests {
48
+ caso "consulta cep valido" {
49
+ given { cep: "01310100" }
50
+ expect { sucesso: verdadeiro }
51
+ }
52
+ caso "rejeita cep invalido" {
53
+ given { cep: "00000000" }
54
+ expect { sucesso: falso }
55
+ error { tipo: "cep_nao_encontrado" }
56
+ }
57
+ }
58
+ }
59
+
60
+ task consultar_cnpj {
61
+ input {
62
+ cnpj: Texto required
63
+ }
64
+ output {
65
+ razao_social: Texto
66
+ situacao: Texto
67
+ atividade_principal: Texto
68
+ }
69
+ rules {
70
+ cnpj deve_ser formato_cnpj_valido
71
+ cnpj deve_ser digitos_validos
72
+ }
73
+ effects {
74
+ consulta api_receita criticidade = media
75
+ persistencia ChamadaExterna
76
+ auditoria consulta_cnpj
77
+ }
78
+ guarantees {
79
+ razao_social existe
80
+ situacao existe
81
+ }
82
+ error {
83
+ cnpj_nao_encontrado: "CNPJ nao localizado na Receita Federal."
84
+ servico_indisponivel: "Servico da Receita Federal indisponivel."
85
+ formato_invalido: "CNPJ invalido."
86
+ }
87
+ tests {
88
+ caso "consulta cnpj valido" {
89
+ given { cnpj: "11222333000181" }
90
+ expect { sucesso: verdadeiro }
91
+ }
92
+ }
93
+ }
94
+ }