@semacode/cli 1.5.17 → 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 (111) hide show
  1. package/AGENTS.md +268 -260
  2. package/LICENSE +22 -22
  3. package/README.md +93 -61
  4. package/SEMA_BRIEF.curto.txt +8 -6
  5. package/SEMA_BRIEF.md +71 -22
  6. package/SEMA_BRIEF.micro.txt +7 -5
  7. package/SEMA_INDEX.json +931 -193
  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 +119 -116
  15. package/dist/drift.js.map +1 -1
  16. package/dist/importador.d.ts +1 -1
  17. package/dist/importador.js +1 -200
  18. package/dist/importador.js.map +1 -1
  19. package/dist/index.js +1924 -493
  20. package/dist/index.js.map +1 -1
  21. package/dist/mcpRemoto.d.ts +32 -0
  22. package/dist/mcpRemoto.js +61 -0
  23. package/dist/mcpRemoto.js.map +1 -0
  24. package/dist/projeto.js +3 -21
  25. package/dist/projeto.js.map +1 -1
  26. package/dist/tipos.d.ts +1 -1
  27. package/docs/AGENT_STARTER.md +109 -102
  28. package/docs/cli.md +89 -33
  29. package/docs/como-ensinar-a-sema-para-ia.md +42 -36
  30. package/docs/deploy.md +231 -43
  31. package/docs/documentacao.md +61 -36
  32. package/docs/env.md +63 -14
  33. package/docs/extensao-vscode.md +12 -4
  34. package/docs/fluxo-pratico-ia-sema.md +45 -35
  35. package/docs/instalacao-e-primeiro-uso.md +52 -30
  36. package/docs/integracao-com-ia.md +44 -35
  37. package/docs/mcp.md +270 -31
  38. package/docs/pagamento-ponta-a-ponta.md +40 -24
  39. package/docs/persistencia-vendor-first.md +11 -5
  40. package/docs/prompt-base-ia-sema.md +18 -11
  41. package/docs/rollback.md +17 -15
  42. package/docs/sintaxe.md +37 -229
  43. package/exemplos/agendamento.sema +105 -106
  44. package/exemplos/assinatura.sema +133 -136
  45. package/exemplos/auditoria.sema +89 -88
  46. package/exemplos/autenticacao.sema +125 -125
  47. package/exemplos/author_obra_comum.sema +294 -0
  48. package/exemplos/author_tema_sensivel.sema +264 -0
  49. package/exemplos/automacao.sema +107 -107
  50. package/exemplos/cadastro_usuario.sema +54 -54
  51. package/exemplos/calculadora.sema +78 -78
  52. package/exemplos/crud_simples.sema +89 -89
  53. package/exemplos/estoque.sema +127 -126
  54. package/exemplos/exportacao.sema +94 -94
  55. package/exemplos/fila.sema +130 -131
  56. package/exemplos/integracao_externa.sema +94 -94
  57. package/exemplos/multi_tenant.sema +140 -140
  58. package/exemplos/notificacao.sema +149 -98
  59. package/exemplos/operacao_estrategia.sema +633 -402
  60. package/exemplos/pagamento.sema +434 -222
  61. package/exemplos/pagamento_dominio.sema +35 -35
  62. package/exemplos/pedido.sema +255 -119
  63. package/exemplos/permissao.sema +121 -121
  64. package/exemplos/persistencia_vendor_first.sema +86 -86
  65. package/exemplos/profile_game.sema +114 -0
  66. package/exemplos/profile_legal.sema +105 -0
  67. package/exemplos/profile_ops.sema +110 -0
  68. package/exemplos/profile_research.sema +104 -0
  69. package/exemplos/profile_software.sema +123 -0
  70. package/exemplos/profile_workflow_n8n.sema +99 -0
  71. package/exemplos/relatorio.sema +93 -93
  72. package/exemplos/replica_analitica_erp.sema +160 -0
  73. package/exemplos/testes_embutidos.sema +45 -45
  74. package/exemplos/tratamento_erro.sema +157 -157
  75. package/exemplos/upload_arquivo.sema +93 -93
  76. package/exemplos/webhook.sema +94 -96
  77. package/llms-full.txt +34 -34
  78. package/llms.txt +17 -17
  79. package/node_modules/@sema/gerador-css/dist/index.js +563 -563
  80. package/node_modules/@sema/gerador-css/package.json +1 -1
  81. package/node_modules/@sema/gerador-dart/package.json +1 -1
  82. package/node_modules/@sema/gerador-html/dist/index.js +90 -90
  83. package/node_modules/@sema/gerador-html/package.json +1 -1
  84. package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
  85. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  86. package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
  87. package/node_modules/@sema/gerador-lua/package.json +1 -1
  88. package/node_modules/@sema/gerador-python/dist/index.js +122 -96
  89. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  90. package/node_modules/@sema/gerador-python/package.json +1 -1
  91. package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
  92. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  93. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
  94. package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
  95. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  96. package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
  97. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  98. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
  99. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
  100. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  101. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
  102. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  103. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
  104. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
  105. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  106. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
  107. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
  108. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
  109. package/node_modules/@sema/nucleo/package.json +1 -1
  110. package/node_modules/@sema/padroes/package.json +1 -1
  111. package/package.json +15 -15
@@ -1,125 +1,125 @@
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
+ 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
+ }
@@ -0,0 +1,294 @@
1
+ module exemplos.author.obra_comum {
2
+ docs {
3
+ resumo: "Starter publico do Sema Author para obra autoral comum com core, agents, flow e regras anti-cliche."
4
+ }
5
+
6
+ type AuthorCore {
7
+ fields {
8
+ obra: Texto
9
+ publico: PublicoAuthor
10
+ genero: Texto
11
+ tom: Texto
12
+ estilo: Texto
13
+ limites: Lista
14
+ }
15
+ invariants {
16
+ obra existe
17
+ publico em [INFANTIL, JOVEM, ADULTO, TECNICO]
18
+ genero existe
19
+ tom existe
20
+ estilo existe
21
+ limites existe
22
+ }
23
+ }
24
+
25
+ type AgentAuthor {
26
+ fields {
27
+ nome: Texto
28
+ papel: Texto
29
+ permissao: Texto
30
+ }
31
+ invariants {
32
+ nome existe
33
+ papel existe
34
+ permissao existe
35
+ }
36
+ }
37
+
38
+ entity CenaAuthor {
39
+ fields {
40
+ id: Id
41
+ obra: Texto
42
+ status: StatusCena
43
+ objetivo: Texto
44
+ conflito: Texto
45
+ mudanca_de_estado: Booleano
46
+ }
47
+ invariants {
48
+ id existe
49
+ obra existe
50
+ status em [BRIEFING, OUTLINE, RASCUNHO, REVISAO, PUBLICAVEL]
51
+ objetivo existe
52
+ conflito existe
53
+ mudanca_de_estado existe
54
+ }
55
+ }
56
+
57
+ enum PublicoAuthor {
58
+ INFANTIL,
59
+ JOVEM,
60
+ ADULTO,
61
+ TECNICO
62
+ }
63
+
64
+ enum StatusCena {
65
+ BRIEFING,
66
+ OUTLINE,
67
+ RASCUNHO,
68
+ REVISAO,
69
+ PUBLICAVEL
70
+ }
71
+
72
+ task declarar_author_core {
73
+ input {
74
+ obra: Texto required
75
+ publico: PublicoAuthor required
76
+ genero: Texto required
77
+ estilo: Texto required
78
+ }
79
+ output {
80
+ core: AuthorCore
81
+ pronto_para_outline: Booleano
82
+ }
83
+ rules {
84
+ obra deve_ser preenchido
85
+ publico deve_ser valido
86
+ genero deve_ser preenchido
87
+ estilo deve_ser preenchido
88
+ }
89
+ effects {
90
+ auditoria author_core criticidade = media
91
+ }
92
+ forbidden {
93
+ publico_indefinido
94
+ estilo_generico
95
+ fontes_inventadas
96
+ }
97
+ execucao {
98
+ idempotencia: verdadeiro
99
+ timeout: "10s"
100
+ criticidade_operacional: media
101
+ }
102
+ guarantees {
103
+ core existe
104
+ pronto_para_outline == verdadeiro
105
+ }
106
+ tests {
107
+ caso "core autoral minimo" {
108
+ given {
109
+ obra: "As Cidades de Vidro"
110
+ publico: "ADULTO"
111
+ genero: "fantasia_politica"
112
+ estilo: "sobrio"
113
+ }
114
+
115
+ expect {
116
+ sucesso: verdadeiro
117
+ pronto_para_outline: verdadeiro
118
+ }
119
+ }
120
+ }
121
+ }
122
+
123
+ task montar_agents_author {
124
+ input {
125
+ planejador: Texto required
126
+ editor: Texto required
127
+ revisor_cliche: Texto required
128
+ guardiao_estilo: Texto required
129
+ }
130
+ output {
131
+ agents: Lista
132
+ pronto_para_cena: Booleano
133
+ }
134
+ rules {
135
+ planejador deve_ser preenchido
136
+ editor deve_ser preenchido
137
+ revisor_cliche deve_ser preenchido
138
+ guardiao_estilo deve_ser preenchido
139
+ }
140
+ effects {
141
+ auditoria author_agents criticidade = media
142
+ }
143
+ forbidden {
144
+ agent_sem_papel
145
+ agent_sem_limite
146
+ revisor_cliche_ausente
147
+ }
148
+ execucao {
149
+ idempotencia: verdadeiro
150
+ timeout: "10s"
151
+ criticidade_operacional: media
152
+ }
153
+ guarantees {
154
+ agents existe
155
+ pronto_para_cena == verdadeiro
156
+ }
157
+ tests {
158
+ caso "agents autorais completos" {
159
+ given {
160
+ planejador: "planejador"
161
+ editor: "editor"
162
+ revisor_cliche: "anti_cliche"
163
+ guardiao_estilo: "guardiao_estilo"
164
+ }
165
+
166
+ expect {
167
+ sucesso: verdadeiro
168
+ pronto_para_cena: verdadeiro
169
+ }
170
+ }
171
+ }
172
+ }
173
+
174
+ task revisar_cena_contra_cliche {
175
+ input {
176
+ cena_id: Id required
177
+ texto: Texto required
178
+ }
179
+ output {
180
+ achados: Lista
181
+ aprovado: Booleano
182
+ }
183
+ rules {
184
+ cena_id deve_ser valido
185
+ texto deve_ser preenchido
186
+ texto deve_ser sem_cliche_escolhido_predestinado
187
+ texto deve_ser sem_dialogo_resumo
188
+ texto deve_ser sem_frase_de_efeito_vazia
189
+ texto deve_ser sem_voz_generica_de_ia
190
+ }
191
+ effects {
192
+ auditoria author_cliche criticidade = media
193
+ }
194
+ forbidden {
195
+ exposicao_sem_conflito
196
+ dialogo_expositivo
197
+ moralizacao_barata
198
+ }
199
+ execucao {
200
+ idempotencia: verdadeiro
201
+ timeout: "10s"
202
+ criticidade_operacional: media
203
+ }
204
+ guarantees {
205
+ achados existe
206
+ aprovado existe
207
+ }
208
+ tests {
209
+ caso "bloqueia escolhido predestinado" {
210
+ given {
211
+ cena_id: "cena_1"
212
+ texto: "O escolhido predestinado aceitou sua missao."
213
+ }
214
+
215
+ expect {
216
+ sucesso: verdadeiro
217
+ aprovado: falso
218
+ achados: "escolhido_predestinado"
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ task validar_cena_viva {
225
+ input {
226
+ cena_id: Id required
227
+ objetivo: Texto required
228
+ conflito: Texto required
229
+ dialogo_tem_atrito: Booleano required
230
+ altera_estado: Booleano required
231
+ }
232
+ output {
233
+ publicavel: Booleano
234
+ status: StatusCena
235
+ }
236
+ rules {
237
+ objetivo deve_ser preenchido
238
+ conflito deve_ser preenchido
239
+ dialogo_tem_atrito deve_ser verdadeiro
240
+ altera_estado deve_ser verdadeiro
241
+ }
242
+ effects {
243
+ auditoria author_cena criticidade = media
244
+ }
245
+ execucao {
246
+ idempotencia: verdadeiro
247
+ timeout: "10s"
248
+ criticidade_operacional: media
249
+ }
250
+ guarantees {
251
+ publicavel existe
252
+ status em [REVISAO, PUBLICAVEL]
253
+ }
254
+ tests {
255
+ caso "cena altera estado" {
256
+ given {
257
+ cena_id: "cena_2"
258
+ objetivo: "obter a carta"
259
+ conflito: "a aliada mente"
260
+ dialogo_tem_atrito: verdadeiro
261
+ altera_estado: verdadeiro
262
+ }
263
+
264
+ expect {
265
+ sucesso: verdadeiro
266
+ publicavel: verdadeiro
267
+ status: "PUBLICAVEL"
268
+ }
269
+ }
270
+ }
271
+ }
272
+
273
+ flow author_flow_obra_comum {
274
+ obra: Texto
275
+ publico: PublicoAuthor
276
+ genero: Texto
277
+ estilo: Texto
278
+ cena_id: Id
279
+ objetivo: Texto
280
+ conflito: Texto
281
+ planejador: Texto
282
+ editor: Texto
283
+ revisor_cliche: Texto
284
+ guardiao_estilo: Texto
285
+ texto: Texto
286
+ etapa core usa declarar_author_core com obra = obra, publico = publico, genero = genero, estilo = estilo
287
+ etapa agents usa montar_agents_author com planejador = planejador, editor = editor, revisor_cliche = revisor_cliche, guardiao_estilo = guardiao_estilo depende_de core
288
+ etapa cliche usa revisar_cena_contra_cliche com cena_id = cena_id, texto = texto depende_de agents
289
+ etapa cena usa validar_cena_viva com cena_id = cena_id, objetivo = objetivo, conflito = conflito, dialogo_tem_atrito = verdadeiro, altera_estado = verdadeiro depende_de cliche
290
+ effects {
291
+ auditoria author_flow criticidade = media
292
+ }
293
+ }
294
+ }