@semacode/cli 3.12.2 → 4.0.0

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 (90) hide show
  1. package/dist/agentEntryPoints.js +9 -9
  2. package/dist/cliGrammar.js +17 -5
  3. package/dist/cliHelpTexto.js +5 -4
  4. package/dist/contextPack.d.ts +75 -0
  5. package/dist/contextPack.js +130 -0
  6. package/dist/drift.contrato.d.ts +1 -0
  7. package/dist/drift.contrato.js +1 -0
  8. package/dist/drift.part01.d.ts +4 -2
  9. package/dist/drift.part11.js +12 -1
  10. package/dist/drift.part14.d.ts +3 -0
  11. package/dist/drift.part14.js +108 -10
  12. package/dist/driftEscopo.d.ts +1 -0
  13. package/dist/driftEscopo.js +6 -0
  14. package/dist/driftPack.d.ts +65 -0
  15. package/dist/driftPack.js +96 -0
  16. package/dist/entrypointPack.d.ts +47 -0
  17. package/dist/entrypointPack.js +79 -0
  18. package/dist/index.part03.d.ts +2 -0
  19. package/dist/index.part03.js +6 -0
  20. package/dist/index.part05.js +14 -1
  21. package/dist/index.part06.js +51 -0
  22. package/dist/index.part07.d.ts +1 -1
  23. package/dist/index.part07.js +16 -2
  24. package/dist/index.part08.js +1 -1
  25. package/dist/indexPack.d.ts +54 -0
  26. package/dist/indexPack.js +140 -0
  27. package/dist/init/templates.part01.js +393 -393
  28. package/dist/init/templates.part02.js +189 -189
  29. package/dist/initCommand.js +38 -2
  30. package/dist/initTemplatesBackend.js +73 -73
  31. package/dist/initTemplatesFlutter.js +137 -137
  32. package/dist/initTemplatesRuntime.js +350 -350
  33. package/dist/initTemplatesWeb.js +309 -309
  34. package/dist/sync/index.js +35 -35
  35. package/docs/ai-workflow.md +1 -1
  36. package/docs/auth.md +26 -26
  37. package/docs/commands.md +3 -3
  38. package/docs/database.md +15 -15
  39. package/docs/env.md +16 -16
  40. package/docs/frontend.md +41 -41
  41. package/docs/i18n.md +15 -15
  42. package/exemplos/agendamento.sema +1 -1
  43. package/exemplos/assinatura.sema +1 -1
  44. package/exemplos/auditoria.sema +1 -1
  45. package/exemplos/autenticacao.sema +1 -1
  46. package/exemplos/author_obra_comum.sema +1 -1
  47. package/exemplos/author_tema_sensivel.sema +1 -1
  48. package/exemplos/automacao.sema +1 -1
  49. package/exemplos/cadastro_usuario.sema +1 -1
  50. package/exemplos/calculadora.sema +1 -1
  51. package/exemplos/crud_simples.sema +1 -1
  52. package/exemplos/estoque.sema +1 -1
  53. package/exemplos/exportacao.sema +1 -1
  54. package/exemplos/fila.sema +1 -1
  55. package/exemplos/integracao_externa.sema +1 -1
  56. package/exemplos/multi_tenant.sema +1 -1
  57. package/exemplos/notificacao.sema +1 -1
  58. package/exemplos/operacao_estrategia.sema +132 -132
  59. package/exemplos/operacao_estrategia_discovery.sema +220 -220
  60. package/exemplos/operacao_estrategia_fluxo.sema +114 -114
  61. package/exemplos/operacao_estrategia_gates.sema +106 -106
  62. package/exemplos/operacao_estrategia_quarentena.sema +133 -133
  63. package/exemplos/operacao_estrategia_rollout.sema +124 -124
  64. package/exemplos/pagamento.sema +1 -1
  65. package/exemplos/pagamento_dominio.sema +1 -1
  66. package/exemplos/pedido.sema +1 -1
  67. package/exemplos/permissao.sema +1 -1
  68. package/exemplos/persistencia_vendor_first.sema +1 -1
  69. package/exemplos/php_crud.sema +170 -170
  70. package/exemplos/profile_conversas.sema +165 -165
  71. package/exemplos/profile_game.sema +1 -1
  72. package/exemplos/profile_legal.sema +1 -1
  73. package/exemplos/profile_ops.sema +1 -1
  74. package/exemplos/profile_research.sema +1 -1
  75. package/exemplos/profile_software.sema +1 -1
  76. package/exemplos/profile_workflow_n8n.sema +1 -1
  77. package/exemplos/relatorio.sema +1 -1
  78. package/exemplos/replica_analitica_erp.sema +1 -1
  79. package/exemplos/testes_embutidos.sema +1 -1
  80. package/exemplos/tratamento_erro.sema +1 -1
  81. package/exemplos/upload_arquivo.sema +1 -1
  82. package/exemplos/webhook.sema +1 -1
  83. package/node_modules/@sema/gerador-cpp/dist/index.js +176 -176
  84. package/node_modules/@sema/gerador-css/dist/index.part01.js +10 -10
  85. package/node_modules/@sema/gerador-dotnet/dist/index.js +169 -169
  86. package/node_modules/@sema/gerador-html/dist/index.js +17 -17
  87. package/node_modules/@sema/gerador-python/dist/index.part02.js +3 -3
  88. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +11 -11
  89. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +42 -42
  90. package/package.json +1 -1
@@ -1,124 +1,124 @@
1
- module exemplos.operacao_estrategia.rollout {
2
- docs {
3
- resumo: "Task oficial para ativar strategy com nova versao de modelo apos aprovacao manual."
4
- }
5
-
6
- enum StatusStrategy {
7
- RASCUNHO,
8
- ATIVA,
9
- QUARENTENA,
10
- DESATIVADA
11
- }
12
-
13
- enum StatusGate {
14
- ABERTO,
15
- FECHADO
16
- }
17
-
18
- task ativar_strategy_com_nova_versao {
19
- docs {
20
- resumo: "Promove a versao candidata aprovada e reabre a strategy so quando houver aprovacao manual e gate global devidamente controlado."
21
- }
22
- input {
23
- strategy_id: Id required
24
- versao_modelo_ativa: Texto required
25
- versao_modelo_candidata: Texto required
26
- strategy_status_atual: StatusStrategy required
27
- gate_global_atual: StatusGate required
28
- aprovacao_manual: Booleano required
29
- }
30
- output {
31
- strategy_status: StatusStrategy
32
- gate_global: StatusGate
33
- versao_modelo_ativa: Texto
34
- }
35
- authz {
36
- escopo: strategy.rollout.ativar
37
- tenant: obrigatorio
38
- }
39
- dados {
40
- classificacao_padrao: interno
41
- redacao_log: obrigatoria
42
- input {
43
- strategy_id: interno
44
- versao_modelo_ativa: interno
45
- versao_modelo_candidata: interno
46
- strategy_status_atual: interno
47
- gate_global_atual: interno
48
- aprovacao_manual: interno
49
- }
50
- output {
51
- strategy_status: interno
52
- gate_global: interno
53
- versao_modelo_ativa: interno
54
- }
55
- }
56
- audit {
57
- evento: strategy.rollout.ativado
58
- ator: sistema.strategy
59
- correlacao: request_id
60
- retencao: "180d"
61
- motivo: obrigatorio
62
- }
63
- forbidden {
64
- shell.exec
65
- log.segredo
66
- retorno.credencial
67
- }
68
- rules {
69
- strategy_id existe
70
- versao_modelo_ativa existe
71
- versao_modelo_candidata existe
72
- strategy_status_atual em [RASCUNHO, QUARENTENA]
73
- gate_global_atual == FECHADO
74
- aprovacao_manual == verdadeiro
75
- }
76
- effects {
77
- persistencia strategy criticidade = alta
78
- evento strategy_ativada criticidade = alta
79
- auditoria rollout criticidade = alta
80
- }
81
- vinculos {
82
- tabela: strategy
83
- recurso: model_registry
84
- evento: strategy_ativada
85
- }
86
- execucao {
87
- idempotencia: verdadeiro
88
- timeout: "15s"
89
- retry: "nenhum"
90
- compensacao: "reverter_para_versao_modelo_ativa_anterior"
91
- criticidade_operacional: alta
92
- }
93
- state governanca_estrategia {
94
- transitions {
95
- QUARENTENA -> ATIVA
96
- RASCUNHO -> ATIVA
97
- }
98
- }
99
- guarantees {
100
- strategy_status == ATIVA
101
- gate_global == ABERTO
102
- versao_modelo_ativa existe
103
- }
104
- tests {
105
- caso "reativa strategy apos aprovacao do novo modelo" {
106
- given {
107
- strategy_id: "strategy_alpha"
108
- versao_modelo_ativa: "modelo_2026_12"
109
- versao_modelo_candidata: "modelo_2026_13"
110
- strategy_status_atual: "QUARENTENA"
111
- gate_global_atual: "FECHADO"
112
- aprovacao_manual: verdadeiro
113
- }
114
-
115
- expect {
116
- sucesso: verdadeiro
117
- strategy_status: "ATIVA"
118
- gate_global: "ABERTO"
119
- versao_modelo_ativa: "modelo_2026_13"
120
- }
121
- }
122
- }
123
- }
124
- }
1
+ module exemplos.operacao_estrategia.rollout {
2
+ docs {
3
+ resumo: "Task oficial para ativar strategy com nova versao de modelo apos aprovacao manual."
4
+ }
5
+
6
+ enum StatusStrategy {
7
+ RASCUNHO,
8
+ ATIVA,
9
+ QUARENTENA,
10
+ DESATIVADA
11
+ }
12
+
13
+ enum StatusGate {
14
+ ABERTO,
15
+ FECHADO
16
+ }
17
+
18
+ task ativar_strategy_com_nova_versao {
19
+ docs {
20
+ resumo: "Promove a versao candidata aprovada e reabre a strategy so quando houver aprovacao manual e gate global devidamente controlado."
21
+ }
22
+ input {
23
+ strategy_id: Id required
24
+ versao_modelo_ativa: Texto required
25
+ versao_modelo_candidata: Texto required
26
+ strategy_status_atual: StatusStrategy required
27
+ gate_global_atual: StatusGate required
28
+ aprovacao_manual: Booleano required
29
+ }
30
+ output {
31
+ strategy_status: StatusStrategy
32
+ gate_global: StatusGate
33
+ versao_modelo_ativa: Texto
34
+ }
35
+ authz {
36
+ escopo: strategy.rollout.ativar
37
+ tenant: obrigatorio
38
+ }
39
+ dados {
40
+ classificacao_padrao: interno
41
+ redacao_log: obrigatoria
42
+ input {
43
+ strategy_id: interno
44
+ versao_modelo_ativa: interno
45
+ versao_modelo_candidata: interno
46
+ strategy_status_atual: interno
47
+ gate_global_atual: interno
48
+ aprovacao_manual: interno
49
+ }
50
+ output {
51
+ strategy_status: interno
52
+ gate_global: interno
53
+ versao_modelo_ativa: interno
54
+ }
55
+ }
56
+ audit {
57
+ evento: strategy.rollout.ativado
58
+ ator: sistema.strategy
59
+ correlacao: request_id
60
+ retencao: "180d"
61
+ motivo: obrigatorio
62
+ }
63
+ forbidden {
64
+ shell.exec
65
+ log.segredo
66
+ retorno.credencial
67
+ }
68
+ rules {
69
+ strategy_id existe
70
+ versao_modelo_ativa existe
71
+ versao_modelo_candidata existe
72
+ strategy_status_atual em [RASCUNHO, QUARENTENA]
73
+ gate_global_atual == FECHADO
74
+ aprovacao_manual == verdadeiro
75
+ }
76
+ effects {
77
+ persistencia strategy criticidade = alta
78
+ evento strategy_ativada criticidade = alta
79
+ auditoria rollout criticidade = alta
80
+ }
81
+ vinculos {
82
+ tabela: strategy
83
+ recurso: model_registry
84
+ evento: strategy_ativada
85
+ }
86
+ execucao {
87
+ idempotencia: verdadeiro
88
+ timeout: "15s"
89
+ retry: "nenhum"
90
+ compensacao: "reverter_para_versao_modelo_ativa_anterior"
91
+ criticidade_operacional: alta
92
+ }
93
+ state governanca_estrategia {
94
+ transitions {
95
+ QUARENTENA -> ATIVA
96
+ RASCUNHO -> ATIVA
97
+ }
98
+ }
99
+ guarantees {
100
+ strategy_status == ATIVA
101
+ gate_global == ABERTO
102
+ versao_modelo_ativa existe
103
+ }
104
+ tests {
105
+ caso "reativa strategy apos aprovacao do novo modelo" {
106
+ given {
107
+ strategy_id: "strategy_alpha"
108
+ versao_modelo_ativa: "modelo_2026_12"
109
+ versao_modelo_candidata: "modelo_2026_13"
110
+ strategy_status_atual: "QUARENTENA"
111
+ gate_global_atual: "FECHADO"
112
+ aprovacao_manual: verdadeiro
113
+ }
114
+
115
+ expect {
116
+ sucesso: verdadeiro
117
+ strategy_status: "ATIVA"
118
+ gate_global: "ABERTO"
119
+ versao_modelo_ativa: "modelo_2026_13"
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
@@ -431,4 +431,4 @@ module exemplos.pagamento {
431
431
  timeout_gateway: "Erro publico quando o gateway nao responde."
432
432
  }
433
433
  }
434
- }
434
+ }
@@ -32,4 +32,4 @@ module exemplos.pagamento.dominio {
32
32
  PENDENTE -> RECUSADO
33
33
  }
34
34
  }
35
- }
35
+ }
@@ -252,4 +252,4 @@ module exemplos.pedido {
252
252
  auditoria fluxo_aprovacao_pedido criticidade = alta
253
253
  }
254
254
  }
255
- }
255
+ }
@@ -118,4 +118,4 @@ module exemplos.permissao {
118
118
  }
119
119
  }
120
120
  }
121
- }
121
+ }
@@ -83,4 +83,4 @@ module exemplos.persistencia.vendor_first {
83
83
  retention: 300s
84
84
  }
85
85
  }
86
- }
86
+ }
@@ -1,170 +1,170 @@
1
- module exemplos.php.crud {
2
- entity Pedido {
3
- fields {
4
- id: Id
5
- cliente: Texto
6
- total: Numero
7
- status: Texto
8
- }
9
- }
10
-
11
- task criar_pedido {
12
- input {
13
- cliente: Texto required
14
- total: Numero required
15
- }
16
- output {
17
- pedido: Pedido
18
- }
19
- rules {
20
- cliente deve_ser preenchido
21
- total deve_ser positivo
22
- }
23
- effects {
24
- persistencia Pedido
25
- auditoria pedido_criado
26
- }
27
- guarantees {
28
- pedido existe
29
- }
30
- impl {
31
- php_rota: pedidos.rota.criarPedido
32
- php_servico: pedidos.servico.criarPedido
33
- php_persistencia: pedidos.repositorio.criar
34
- }
35
- vinculos {
36
- arquivo: "src/Pedidos/Controller/PedidoController.php"
37
- arquivo: "src/Pedidos/Service/PedidoService.php"
38
- arquivo: "src/Pedidos/Repository/PedidoRepository.php"
39
- simbolo: pedidos.rota.criarPedido
40
- }
41
- tests {
42
- caso "cria pedido" {
43
- given {
44
- cliente: "Cliente Exemplo"
45
- total: 150.0
46
- }
47
-
48
- expect {
49
- sucesso: verdadeiro
50
- }
51
- }
52
- }
53
- }
54
-
55
- task listar_pedidos {
56
- input {
57
- status: Texto
58
- }
59
- output {
60
- pedidos: Lista
61
- }
62
- effects {
63
- consulta Pedido
64
- }
65
- guarantees {
66
- pedidos existe
67
- }
68
- impl {
69
- php_rota: pedidos.rota.listarPedidos
70
- php_servico: pedidos.servico.listarPedidos
71
- }
72
- vinculos {
73
- arquivo: "src/Pedidos/Controller/PedidoController.php"
74
- arquivo: "src/Pedidos/Service/PedidoService.php"
75
- simbolo: pedidos.rota.listarPedidos
76
- }
77
- tests {
78
- caso "lista pedidos por status" {
79
- given {
80
- status: "pago"
81
- }
82
-
83
- expect {
84
- sucesso: verdadeiro
85
- }
86
- }
87
- }
88
- }
89
-
90
- task cancelar_pedido {
91
- input {
92
- id: Id required
93
- }
94
- output {
95
- cancelado: Booleano
96
- }
97
- rules {
98
- id deve_ser valido
99
- }
100
- effects {
101
- persistencia Pedido
102
- auditoria pedido_cancelado
103
- }
104
- guarantees {
105
- cancelado == verdadeiro
106
- }
107
- impl {
108
- php_rota: pedidos.rota.cancelarPedido
109
- php_servico: pedidos.servico.cancelarPedido
110
- php_persistencia: pedidos.repositorio.atualizarStatus
111
- }
112
- vinculos {
113
- arquivo: "src/Pedidos/Controller/PedidoController.php"
114
- arquivo: "src/Pedidos/Service/PedidoService.php"
115
- arquivo: "src/Pedidos/Repository/PedidoRepository.php"
116
- simbolo: pedidos.rota.cancelarPedido
117
- }
118
- tests {
119
- caso "cancela pedido por id" {
120
- given {
121
- id: "ped_1"
122
- }
123
-
124
- expect {
125
- sucesso: verdadeiro
126
- }
127
- }
128
- }
129
- }
130
-
131
- route pedidos_criar {
132
- metodo: POST
133
- caminho: /pedidos
134
- task: criar_pedido
135
- finalidade: cadastro_pedido
136
- input {
137
- cliente: Texto
138
- total: Numero
139
- }
140
- output {
141
- pedido: Pedido
142
- }
143
- }
144
-
145
- route pedidos_listar {
146
- metodo: GET
147
- caminho: /pedidos
148
- task: listar_pedidos
149
- finalidade: consulta_pedidos
150
- input {
151
- status: Texto
152
- }
153
- output {
154
- pedidos: Lista
155
- }
156
- }
157
-
158
- route pedidos_cancelar {
159
- metodo: PATCH
160
- caminho: "/pedidos/{id}/cancelar"
161
- task: cancelar_pedido
162
- finalidade: cancelamento_pedido
163
- input {
164
- id: Id
165
- }
166
- output {
167
- cancelado: Booleano
168
- }
169
- }
170
- }
1
+ module exemplos.php.crud {
2
+ entity Pedido {
3
+ fields {
4
+ id: Id
5
+ cliente: Texto
6
+ total: Numero
7
+ status: Texto
8
+ }
9
+ }
10
+
11
+ task criar_pedido {
12
+ input {
13
+ cliente: Texto required
14
+ total: Numero required
15
+ }
16
+ output {
17
+ pedido: Pedido
18
+ }
19
+ rules {
20
+ cliente deve_ser preenchido
21
+ total deve_ser positivo
22
+ }
23
+ effects {
24
+ persistencia Pedido
25
+ auditoria pedido_criado
26
+ }
27
+ guarantees {
28
+ pedido existe
29
+ }
30
+ impl {
31
+ php_rota: pedidos.rota.criarPedido
32
+ php_servico: pedidos.servico.criarPedido
33
+ php_persistencia: pedidos.repositorio.criar
34
+ }
35
+ vinculos {
36
+ arquivo: "src/Pedidos/Controller/PedidoController.php"
37
+ arquivo: "src/Pedidos/Service/PedidoService.php"
38
+ arquivo: "src/Pedidos/Repository/PedidoRepository.php"
39
+ simbolo: pedidos.rota.criarPedido
40
+ }
41
+ tests {
42
+ caso "cria pedido" {
43
+ given {
44
+ cliente: "Cliente Exemplo"
45
+ total: 150.0
46
+ }
47
+
48
+ expect {
49
+ sucesso: verdadeiro
50
+ }
51
+ }
52
+ }
53
+ }
54
+
55
+ task listar_pedidos {
56
+ input {
57
+ status: Texto
58
+ }
59
+ output {
60
+ pedidos: Lista
61
+ }
62
+ effects {
63
+ consulta Pedido
64
+ }
65
+ guarantees {
66
+ pedidos existe
67
+ }
68
+ impl {
69
+ php_rota: pedidos.rota.listarPedidos
70
+ php_servico: pedidos.servico.listarPedidos
71
+ }
72
+ vinculos {
73
+ arquivo: "src/Pedidos/Controller/PedidoController.php"
74
+ arquivo: "src/Pedidos/Service/PedidoService.php"
75
+ simbolo: pedidos.rota.listarPedidos
76
+ }
77
+ tests {
78
+ caso "lista pedidos por status" {
79
+ given {
80
+ status: "pago"
81
+ }
82
+
83
+ expect {
84
+ sucesso: verdadeiro
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ task cancelar_pedido {
91
+ input {
92
+ id: Id required
93
+ }
94
+ output {
95
+ cancelado: Booleano
96
+ }
97
+ rules {
98
+ id deve_ser valido
99
+ }
100
+ effects {
101
+ persistencia Pedido
102
+ auditoria pedido_cancelado
103
+ }
104
+ guarantees {
105
+ cancelado == verdadeiro
106
+ }
107
+ impl {
108
+ php_rota: pedidos.rota.cancelarPedido
109
+ php_servico: pedidos.servico.cancelarPedido
110
+ php_persistencia: pedidos.repositorio.atualizarStatus
111
+ }
112
+ vinculos {
113
+ arquivo: "src/Pedidos/Controller/PedidoController.php"
114
+ arquivo: "src/Pedidos/Service/PedidoService.php"
115
+ arquivo: "src/Pedidos/Repository/PedidoRepository.php"
116
+ simbolo: pedidos.rota.cancelarPedido
117
+ }
118
+ tests {
119
+ caso "cancela pedido por id" {
120
+ given {
121
+ id: "ped_1"
122
+ }
123
+
124
+ expect {
125
+ sucesso: verdadeiro
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ route pedidos_criar {
132
+ metodo: POST
133
+ caminho: /pedidos
134
+ task: criar_pedido
135
+ finalidade: cadastro_pedido
136
+ input {
137
+ cliente: Texto
138
+ total: Numero
139
+ }
140
+ output {
141
+ pedido: Pedido
142
+ }
143
+ }
144
+
145
+ route pedidos_listar {
146
+ metodo: GET
147
+ caminho: /pedidos
148
+ task: listar_pedidos
149
+ finalidade: consulta_pedidos
150
+ input {
151
+ status: Texto
152
+ }
153
+ output {
154
+ pedidos: Lista
155
+ }
156
+ }
157
+
158
+ route pedidos_cancelar {
159
+ metodo: PATCH
160
+ caminho: "/pedidos/{id}/cancelar"
161
+ task: cancelar_pedido
162
+ finalidade: cancelamento_pedido
163
+ input {
164
+ id: Id
165
+ }
166
+ output {
167
+ cancelado: Booleano
168
+ }
169
+ }
170
+ }