@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,78 +1,78 @@
1
- module exemplos.calculadora {
2
- docs {
3
- resumo: "Operacoes aritmeticas simples com garantias e testes."
4
- }
5
-
6
- comments {
7
- observacao: "Exemplo base para demonstrar tarefas semanticas puras."
8
- }
9
-
10
- task somar {
11
- input {
12
- a: Numero required
13
- b: Numero required
14
- }
15
- output {
16
- resultado: Numero
17
- }
18
- rules {
19
- a deve_ser numero_valido
20
- b deve_ser numero_valido
21
- }
22
- effects {
23
- auditoria operacao soma
24
- }
25
- guarantees {
26
- resultado existe
27
- }
28
- error {
29
- entrada_invalida: "Os valores precisam ser numericos."
30
- }
31
- tests {
32
- caso "soma basica" {
33
- given {
34
- a: 2
35
- b: 3
36
- }
37
-
38
- expect {
39
- sucesso: verdadeiro
40
- }
41
- }
42
- }
43
- }
44
-
45
- task dividir {
46
- input {
47
- dividendo: Numero required
48
- divisor: Numero required
49
- }
50
- output {
51
- resultado: Numero
52
- }
53
- rules {
54
- divisor deve_ser diferente_de_zero
55
- }
56
- effects {
57
- auditoria operacao divisao
58
- }
59
- guarantees {
60
- resultado existe
61
- }
62
- error {
63
- divisor_zero: "Nao e permitido dividir por zero."
64
- }
65
- tests {
66
- caso "divisao valida" {
67
- given {
68
- dividendo: 10
69
- divisor: 2
70
- }
71
-
72
- expect {
73
- sucesso: verdadeiro
74
- }
75
- }
76
- }
77
- }
78
- }
1
+ module exemplos.calculadora {
2
+ docs {
3
+ resumo: "Operacoes aritmeticas simples com garantias e testes."
4
+ }
5
+
6
+ comments {
7
+ observacao: "Exemplo base para demonstrar tarefas semanticas puras."
8
+ }
9
+
10
+ task somar {
11
+ input {
12
+ a: Numero required
13
+ b: Numero required
14
+ }
15
+ output {
16
+ resultado: Numero
17
+ }
18
+ rules {
19
+ a deve_ser numero_valido
20
+ b deve_ser numero_valido
21
+ }
22
+ effects {
23
+ auditoria operacao soma
24
+ }
25
+ guarantees {
26
+ resultado existe
27
+ }
28
+ error {
29
+ entrada_invalida: "Os valores precisam ser numericos."
30
+ }
31
+ tests {
32
+ caso "soma basica" {
33
+ given {
34
+ a: 2
35
+ b: 3
36
+ }
37
+
38
+ expect {
39
+ sucesso: verdadeiro
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ task dividir {
46
+ input {
47
+ dividendo: Numero required
48
+ divisor: Numero required
49
+ }
50
+ output {
51
+ resultado: Numero
52
+ }
53
+ rules {
54
+ divisor deve_ser diferente_de_zero
55
+ }
56
+ effects {
57
+ auditoria operacao divisao
58
+ }
59
+ guarantees {
60
+ resultado existe
61
+ }
62
+ error {
63
+ divisor_zero: "Nao e permitido dividir por zero."
64
+ }
65
+ tests {
66
+ caso "divisao valida" {
67
+ given {
68
+ dividendo: 10
69
+ divisor: 2
70
+ }
71
+
72
+ expect {
73
+ sucesso: verdadeiro
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
@@ -1,89 +1,89 @@
1
- module exemplos.crud.simples {
2
- entity Produto {
3
- fields {
4
- id: Id
5
- nome: Texto
6
- preco: Decimal
7
- ativo: Booleano
8
- }
9
- }
10
-
11
- task criar_produto {
12
- input {
13
- nome: Texto required
14
- preco: Decimal required
15
- }
16
- output {
17
- produto: Produto
18
- }
19
- rules {
20
- nome deve_ser preenchido
21
- preco deve_ser positivo
22
- }
23
- effects {
24
- persistencia Produto
25
- auditoria produto_criado
26
- }
27
- guarantees {
28
- produto existe
29
- }
30
- tests {
31
- caso "cria produto" {
32
- given {
33
- nome: "Caneca"
34
- preco: 39.9
35
- }
36
-
37
- expect {
38
- sucesso: verdadeiro
39
- }
40
- }
41
- }
42
- }
43
-
44
- task atualizar_produto {
45
- input {
46
- id: Id required
47
- nome: Texto
48
- preco: Decimal
49
- }
50
- output {
51
- produto: Produto
52
- }
53
- rules {
54
- id deve_ser valido
55
- }
56
- effects {
57
- persistencia Produto
58
- auditoria produto_atualizado
59
- }
60
- guarantees {
61
- produto existe
62
- }
63
- tests {
64
- caso "atualiza produto" {
65
- given {
66
- id: "prod_1"
67
- }
68
-
69
- expect {
70
- sucesso: verdadeiro
71
- }
72
- }
73
- }
74
- }
75
-
76
- route produtos {
77
- metodo: POST
78
- caminho: /produtos
79
- task: criar_produto
80
- finalidade: cadastro_produto
81
- input {
82
- nome: Texto
83
- preco: Decimal
84
- }
85
- output {
86
- produto: Produto
87
- }
88
- }
89
- }
1
+ module exemplos.crud.simples {
2
+ entity Produto {
3
+ fields {
4
+ id: Id
5
+ nome: Texto
6
+ preco: Decimal
7
+ ativo: Booleano
8
+ }
9
+ }
10
+
11
+ task criar_produto {
12
+ input {
13
+ nome: Texto required
14
+ preco: Decimal required
15
+ }
16
+ output {
17
+ produto: Produto
18
+ }
19
+ rules {
20
+ nome deve_ser preenchido
21
+ preco deve_ser positivo
22
+ }
23
+ effects {
24
+ persistencia Produto
25
+ auditoria produto_criado
26
+ }
27
+ guarantees {
28
+ produto existe
29
+ }
30
+ tests {
31
+ caso "cria produto" {
32
+ given {
33
+ nome: "Caneca"
34
+ preco: 39.9
35
+ }
36
+
37
+ expect {
38
+ sucesso: verdadeiro
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ task atualizar_produto {
45
+ input {
46
+ id: Id required
47
+ nome: Texto
48
+ preco: Decimal
49
+ }
50
+ output {
51
+ produto: Produto
52
+ }
53
+ rules {
54
+ id deve_ser valido
55
+ }
56
+ effects {
57
+ persistencia Produto
58
+ auditoria produto_atualizado
59
+ }
60
+ guarantees {
61
+ produto existe
62
+ }
63
+ tests {
64
+ caso "atualiza produto" {
65
+ given {
66
+ id: "prod_1"
67
+ }
68
+
69
+ expect {
70
+ sucesso: verdadeiro
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+ route produtos {
77
+ metodo: POST
78
+ caminho: /produtos
79
+ task: criar_produto
80
+ finalidade: cadastro_produto
81
+ input {
82
+ nome: Texto
83
+ preco: Decimal
84
+ }
85
+ output {
86
+ produto: Produto
87
+ }
88
+ }
89
+ }
@@ -1,126 +1,127 @@
1
- module exemplos.estoque {
2
- docs {
3
- resumo: "Controle de estoque com reserva, entrada e saida de produtos."
4
- }
5
-
6
- entity ItemEstoque {
7
- fields {
8
- id: Id
9
- produto_id: Id
10
- quantidade: Inteiro
11
- quantidade_reservada: Inteiro
12
- localizacao: Texto
13
- }
14
- }
15
-
16
- entity MovimentacaoEstoque {
17
- fields {
18
- id: Id
19
- produto_id: Id
20
- tipo: Texto
21
- quantidade: Inteiro
22
- motivo: Texto
23
- realizada_em: Timestamp
24
- }
25
- }
26
-
27
- task reservar_estoque {
28
- input {
29
- produto_id: Id required
30
- quantidade: Inteiro required
31
- pedido_id: Id required
32
- }
33
- output {
34
- reserva_id: Id
35
- }
36
- rules {
37
- quantidade > 0
38
- produto_id deve_ser valido
39
- }
40
- effects {
41
- consulta ItemEstoque por produto_id criticidade = alta
42
- persistencia ItemEstoque
43
- persistencia MovimentacaoEstoque
44
- evento estoque_reservado criticidade = media
45
- auditoria reserva_estoque
46
- }
47
- guarantees {
48
- reserva_id existe
49
- ItemEstoque.quantidade_reservada >= quantidade
50
- }
51
- error {
52
- estoque_insuficiente: "Quantidade solicitada indisponivel em estoque."
53
- produto_nao_encontrado: "Produto nao localizado no estoque."
54
- }
55
- tests {
56
- caso "reserva com estoque disponivel" {
57
- given { produto_id: "prod_1" quantidade: 5 pedido_id: "ped_1" }
58
- expect { sucesso: verdadeiro }
59
- }
60
- caso "reserva sem estoque" {
61
- given { produto_id: "prod_sem" quantidade: 999 pedido_id: "ped_2" }
62
- expect { sucesso: falso }
63
- error { tipo: "estoque_insuficiente" }
64
- }
65
- }
66
- }
67
-
68
- task registrar_entrada {
69
- input {
70
- produto_id: Id required
71
- quantidade: Inteiro required
72
- motivo: Texto required
73
- }
74
- output {
75
- movimentacao_id: Id
76
- }
77
- rules {
78
- quantidade > 0
79
- motivo deve_ser preenchido
80
- }
81
- effects {
82
- persistencia ItemEstoque
83
- persistencia MovimentacaoEstoque
84
- evento estoque_reposto
85
- auditoria entrada_estoque
86
- }
87
- guarantees {
88
- movimentacao_id existe
89
- }
90
- tests {
91
- caso "entrada valida" {
92
- given { produto_id: "prod_1" quantidade: 100 motivo: "Reposicao mensal" }
93
- expect { sucesso: verdadeiro }
94
- }
95
- }
96
- }
97
-
98
- task liberar_reserva {
99
- input {
100
- reserva_id: Id required
101
- motivo: Texto required
102
- }
103
- output {
104
- protocolo: Id
105
- }
106
- rules {
107
- reserva_id deve_ser valido
108
- motivo deve_ser preenchido
109
- }
110
- effects {
111
- persistencia ItemEstoque
112
- persistencia MovimentacaoEstoque
113
- evento reserva_liberada
114
- auditoria liberacao_reserva
115
- }
116
- guarantees {
117
- protocolo existe
118
- }
119
- tests {
120
- caso "libera reserva existente" {
121
- given { reserva_id: "res_1" motivo: "Pedido cancelado" }
122
- expect { sucesso: verdadeiro }
123
- }
124
- }
125
- }
126
- }
1
+ module exemplos.estoque {
2
+ docs {
3
+ resumo: "Controle de estoque com reserva, entrada e saida de produtos."
4
+ }
5
+
6
+ entity ItemEstoque {
7
+ fields {
8
+ id: Id
9
+ produto_id: Id
10
+ quantidade: Inteiro
11
+ quantidade_reservada: Inteiro
12
+ localizacao: Texto
13
+ }
14
+ }
15
+
16
+ entity MovimentacaoEstoque {
17
+ fields {
18
+ id: Id
19
+ produto_id: Id
20
+ tipo: Texto
21
+ quantidade: Inteiro
22
+ motivo: Texto
23
+ realizada_em: Timestamp
24
+ }
25
+ }
26
+
27
+ task reservar_estoque {
28
+ input {
29
+ produto_id: Id required
30
+ quantidade: Inteiro required
31
+ pedido_id: Id required
32
+ }
33
+ output {
34
+ reserva_id: Id
35
+ quantidade_reservada: Inteiro
36
+ }
37
+ rules {
38
+ quantidade > 0
39
+ produto_id deve_ser valido
40
+ }
41
+ effects {
42
+ consulta ItemEstoque por produto_id criticidade = alta
43
+ persistencia ItemEstoque
44
+ persistencia MovimentacaoEstoque
45
+ evento estoque_reservado criticidade = media
46
+ auditoria reserva_estoque
47
+ }
48
+ guarantees {
49
+ reserva_id existe
50
+ quantidade_reservada existe
51
+ }
52
+ error {
53
+ estoque_insuficiente: "Quantidade solicitada indisponivel em estoque."
54
+ produto_nao_encontrado: "Produto nao localizado no estoque."
55
+ }
56
+ tests {
57
+ caso "reserva com estoque disponivel" {
58
+ given { produto_id: "prod_1" quantidade: 5 pedido_id: "ped_1" }
59
+ expect { sucesso: verdadeiro }
60
+ }
61
+ caso "reserva sem estoque" {
62
+ given { produto_id: "prod_sem" quantidade: 999 pedido_id: "ped_2" }
63
+ expect { sucesso: falso }
64
+ error { tipo: "estoque_insuficiente" }
65
+ }
66
+ }
67
+ }
68
+
69
+ task registrar_entrada {
70
+ input {
71
+ produto_id: Id required
72
+ quantidade: Inteiro required
73
+ motivo: Texto required
74
+ }
75
+ output {
76
+ movimentacao_id: Id
77
+ }
78
+ rules {
79
+ quantidade > 0
80
+ motivo deve_ser preenchido
81
+ }
82
+ effects {
83
+ persistencia ItemEstoque
84
+ persistencia MovimentacaoEstoque
85
+ evento estoque_reposto
86
+ auditoria entrada_estoque
87
+ }
88
+ guarantees {
89
+ movimentacao_id existe
90
+ }
91
+ tests {
92
+ caso "entrada valida" {
93
+ given { produto_id: "prod_1" quantidade: 100 motivo: "Reposicao mensal" }
94
+ expect { sucesso: verdadeiro }
95
+ }
96
+ }
97
+ }
98
+
99
+ task liberar_reserva {
100
+ input {
101
+ reserva_id: Id required
102
+ motivo: Texto required
103
+ }
104
+ output {
105
+ protocolo: Id
106
+ }
107
+ rules {
108
+ reserva_id deve_ser valido
109
+ motivo deve_ser preenchido
110
+ }
111
+ effects {
112
+ persistencia ItemEstoque
113
+ persistencia MovimentacaoEstoque
114
+ evento reserva_liberada
115
+ auditoria liberacao_reserva
116
+ }
117
+ guarantees {
118
+ protocolo existe
119
+ }
120
+ tests {
121
+ caso "libera reserva existente" {
122
+ given { reserva_id: "res_1" motivo: "Pedido cancelado" }
123
+ expect { sucesso: verdadeiro }
124
+ }
125
+ }
126
+ }
127
+ }